处理iPad设备上的低内存启动情况

时间:2011-02-21 17:14:52

标签: ipad ios memory crash ios-4.2

在iPad设备上运行游戏应用程序时,存在许多低内存问题。因此,我正在为自己的游戏考虑以下解决方案:在应用程序启动之前,我会分配所需的空间并在启动时立即释放它。

这似乎运行得很好,在应用程序运行时让我更加稳定地解决了内存分配问题。你怎么看待这件事?这是一个很好的方法吗?

e.g:

{
    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 个答案:

答案 0 :(得分:2)

这是非常糟糕的做法。因为强制低内存警告导致退出iPod应用程序或停止其他正在运行的后台应用程序(如Skype或导航软件),这不是一个好的用户体验。

我会更密切地关注您的记忆消耗,并在每次启动应用程序时使用肘部。这不是iOS上的好公民身份。