Cocos2D:需要分配什么?

时间:2012-07-02 23:18:19

标签: memory-management cocos2d-iphone

我现在应该知道这一点,但是当我不需要时,我无法决定何时分配游戏对象。

示例:我的游戏中有一个暂停按钮。这个按钮没有以任何方式分配,我把输入层放在这样的: pauseButton = [CCSprite spriteWithSpriteFrameName:@"pause.png"];

我也用一些标签做了这个。

但是,我在一个教程的帮助下将我的角色对象添加到游戏中,如下所示: [[[self alloc]initWithImage] autorelease]; (这一行是方法的一部分)

那么,如何决定是否分配游戏对象呢?有没有好的做法,或者我应该分配 - >自动发布我添加到游戏中的所有内容?

1 个答案:

答案 0 :(得分:1)

实际上,这两条线基本相同。 spriteWithSpriteFrameName是CCSprite类的静态函数。它返回一个自动释放对象。

initWithImage是非静态的,所以你需要先分配它,但由于它也标记为autorelease,它的行为方式相同。

我的经验法则是,如果有可用的静态函数返回自动释放对象,为方便起见,我使用它们。如果从第二个示例中删除自动释放,则必须在对象上手动调用“release”以销毁它。您无法在autorelease对象上调用release,因此可能存在您希望尽早销毁对象的情况(例如,不是在场景更改中)。

希望有所帮助!