Обработка ситуаций нехватки памяти на устройствах iPad - PullRequest
0 голосов
/ 21 февраля 2011

Существует множество проблем с нехваткой памяти при использовании игровых приложений на устройствах iPad.Поэтому для своей игры я думаю о следующем решении: перед запуском приложения я выделяю необходимое пространство и сразу освобождаю его при запуске.

Это, кажется, работает очень хорошо, давая мне больше стабильности спроблемы выделения памяти при запуске приложения.Что вы думаете об этом?Это хороший способ сделать это?

например:

{
    size_t size = 30*MB;

    NSLog(@"free up %u bytes", size);

    size_t allocated = 0;

    while(allocated < size && blocksCounter < MAX_BLOCKS) {
        const size_t blockSize = 256*KB;    // 256K blocks

        blocks[blocksCounter] = malloc(blockSize);

        if(blocks[blocksCounter]) {
            bzero(blocks[blocksCounter], blockSize);
        }
        else {
            NSLog(@"warning empty block at idx %d", blocksCounter);
        }

        blocksCounter++;
        allocated += blockSize;
    } 

    for(int i=blocksCounter-1; i>=0; i--) {
        if(blocks[i]) {
            free(blocks[i]);
        }
    }

    blocksCounter = 0;
}

1 Ответ

2 голосов
/ 21 февраля 2011

Это очень плохая практика. Потому что не рекомендуется использовать предупреждение о нехватке памяти, которое приводит к выходу из приложения iPod, например, или к остановке других работающих фоновых приложений, таких как Skype или ваше навигационное программное обеспечение.

Я бы более внимательно следил за потреблением памяти и работал бы над этим или использовал бы локти каждый раз, когда вы запускаете свое приложение. Это не хорошее гражданство на iOS.

...