在Cocos2d中释放层和精灵

时间:2011-11-16 19:58:59

标签: iphone ipad cocos2d-iphone

我有一个包含GameLayer和BackgroundLayer的多个GameScenes的简单游戏结构。 GameLayer添加了CCSprites。在游戏过程中没有任何东西被删除或添加。

我不确定确保所有内容都正确解除分配的最佳方法。我可以在每次更改场景时调用[GameScene release]来释放包含的GameLayer和BackgroundLayer吗?取消分配GameScene是否释放所有包含的孩子?有没有系统的方法来解除cocos2d的分配,以确保你已经涵盖了所有内容?

2 个答案:

答案 0 :(得分:2)

除非您将保留或副本发送到其中一个Cocos2D节点,否则您无需执行任何操作。当您通过CCDirector replaceScene更改场景时,Cocos2D将为您清理该场景。

你也可以简单地开始使用ARC(自动引用计数),这些考虑因素已成为过去。为此,您必须使用specially modified version of Cocos2D或只需使用Kobold2D, which supports ARC开箱即用。事实上,它默认在所有Kobold2D示例项目中启用。

答案 1 :(得分:0)

如果使用节点类方法(即[CCscene节点])创建场景和图层(通常是任何cocos2d节点),则不需要释放它们,因为它们是自动释放对象。但是我建议覆盖dealloc以删除AllChildrenWithCleanup:TRUE

希望这有助于你