我正在开发一款iPad游戏。当我在iPad上运行游戏并进入下一个场景时,由于内存不足,iPad会自动关闭应用程序。虽然已经使用TexturePacker将图像转换为pvr格式,但是在场景之间切换时仍无法释放内存。
[CCTextureCache sharedTextureCache] removeUnusedTextures];
[[CCSpriteFrameCache sharedSpriteFrameCache] removeUnusedSpriteFrames];
我正在使用这些代码,但似乎不太够用。
您有什么想法吗?
CCTexture2D
中,并重写init...
和dealloc
方法来更新静态的NSMutableArray
,然后在设置场景之前打印它。这样你就可以看到是否还有未释放的纹理了。重要提示:将它们作为非保留对象添加到NSMutableArray
中。 - Tomasz Zabłocki[yourArray addObject:[NSValue valueWithNonretainedObject:yourObject]]
将对象添加到数组中而无需保留它们,然后使用[[yourArray objectAtIndex:index] nonretainedObjectValue]
获取它。 - Tomasz Zabłocki