保留的孩子 - 必须释放?

时间:2011-10-15 14:01:46

标签: objective-c cocos2d-iphone

假设我获得了播放器的CCSprite,然后是健康栏的另一个CCSprite。

运行状况CCSprite是播放器CCSprite的子代。

出于某些原因,我决定保留健康栏,例如

[healthBarSprite retain];

我的问题是:由于我保留了健康栏,我应该运行

[healthBarSprite release];

在某些时候,对吧?

这是一件事:健康栏被保留,但玩家精灵不是。所以我发布的唯一内容就是健康吧?

如果玩家精灵实际上被保留了,在释放它时,健康栏是否会自动释放,或者我必须首先释放它然后播放器?

1 个答案:

答案 0 :(得分:1)

是的,您必须将发布内容发送到健康栏。玩家精灵是否会释放健康栏并不是您需要担心的事情;如果它释放它,意图是平衡它在内部产生的保留。您需要担心的是平衡所做的保留调用。

为了说明,播放器精灵很可能会在添加子节点时保留其子节点,并在删除它们时将其释放,但无论如何,这都是CCSprite的实现细节。它会担心平衡它所做的保留呼叫,而你担心平衡你的呼叫。