我有一个很大的问题,我不明白为什么会发生.情况就是这样:
- 在Cocos2D中有一个很棒的项目有10个场景.每个场景都是一本带有巨大精灵的书页.它使用Kobold2D 1.0.2实现.
- 每个页面在单例类中都有公共对象,通过LayerColor放置一个公共菜单.
- 精灵是PVR中的TexturePacker .CCZ RGBA4444和iPad内存中每个spritesheet加载大约16-20Mb.
- 我使用CCTransitionTurnPage替换下一个的replaceScene.
- 在每个页面(类)的init方法中,加载纹理和FrameFile.
- 在每个页面(类)的onExit方法中,卸载纹理和frameFile.我使用了dumpCachedTextureInfo,并说我完全从内存中加载和卸载纹理.
- 当然,我从孩子身上移除所有物体.我的所有精灵都是在.h的接口部分声明的公共变量,因为我需要在类的每个方法中访问它们.
- 我的项目是在ARC项目中使用Kobold2D集成的(但是你知道附加的Kobold2D项目没有为兼容性问题启用ARC)
事实上,当我开始这个项目时,一切看起来都很完美,但是对于我制作的每个场景(页面),内存都在增加.Page1:30Mb.,Page2:40,Page 3:54,Page 4:65 ...在7或8个场景之后,Instruments,Xcode或iPad本身挂起应用程序而没有任何消息(除了具有最终低内存警告的仪器) .
为什么每个场景后都没有释放内存?也许是因为ARC和没有超级dealloc变量.为什么纹理看起来完全卸载但似乎没有卸载因为内存在崩溃之前无法控制地增长?