当我调用replaceScene时,我的场景中的spriteBatchNodes似乎没有被释放。每当我更换场景时,“生活”计数就会增加一个。
存储在spriteBatchNode中的每个对象不仅仅是一个CCSprite - 它是一个派生自CCSprite的类,具有其他行为。
什么可能导致spriteBatchNode不被释放? 我添加到spriteBatchNode的节点都没有被释放。
我取消计划在作为spritebatchnode一部分的节点上运行的所有选择器。
答案 0 :(得分:1)
您很可能遇到过retain cycle。至少有一个节点仍处于打开状态,因此不会释放精灵批处理节点。
每当您将节点对象存储在其他自定义集合(数组,字典等)中时,这种情况尤为常见。为了确保Cocos2D能够正确释放其内存,您需要使用-(void) cleanup
方法而不是-(void) dealloc
来发布这些集合。