cocos2d场景释放和ccb节点

时间:2013-01-15 08:25:22

标签: cocos2d-iphone ccscene

我有一个简单的CCScene,其中只包含一个使用[CCBReader nodeGraphWithFile:]方法从CocosBuilder模板创建的节点。

到目前为止,我没有在场景的dealloc方法中释放ccb节点,因为我预计它会被自动释放。但是在分配探查器中,我注意到如果我在CCDirector中多次按下/弹出场景,就会发生内存泄漏。

如果我实际release场景的dealloc方法中的节点,则此内存泄漏消失。

为什么我需要释放节点,虽然我没有保留/ init它?有什么我误解了吗?

1 个答案:

答案 0 :(得分:0)

通过此创建的对象会发生什么?

[CCBReader nodeGraphWithFile:]

如果将其分配给保留属性,它将被保留;所以你需要明确地释放它。 E.g:

self.nodeGraph = [CCBReader nodeGraphWithFile:...];

如果nodeGraph被声明为保留属性,则[CCBReader nodeGraphWithFile:]中创建的自动释放对象将被属性保留,您需要在dealloc中释放它。

将此与不使用属性进行对比,以保留对节点对象的引用并将其直接添加到节点层次结构中:

[self addChildNode:[CCBReader nodeGraphWithFile:...]];

在这种情况下,你不需要做任何明确的发布,因为你没有保留自己的对象。