调用replaceScene时不释放CCSpriteBatchNode

时间:2011-11-29 12:01:30

标签: memory-management memory-leaks cocos2d-iphone

当我调用replaceScene时,我的场景中的spriteBatchNodes似乎没有被释放。每当我更换场景时,“生活”计数就会增加一个。

存储在spriteBatchNode中的每个对象不仅仅是一个CCSprite - 它是一个派生自CCSprite的类,具有其他行为。

什么可能导致spriteBatchNode不被释放? 我添加到spriteBatchNode的节点都没有被释放。

我取消计划在作为spritebatchnode一部分的节点上运行的所有选择器。

1 个答案:

答案 0 :(得分:1)

您很可能遇到过retain cycle。至少有一个节点仍处于打开状态,因此不会释放精灵批处理节点。

每当您将节点对象存储在其他自定义集合(数组,字典等)中时,这种情况尤为常见。为了确保Cocos2D能够正确释放其内存,您需要使用-(void) cleanup方法而不是-(void) dealloc来发布这些集合。