1

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

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

我也用一些标签做到了这一点。

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

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

4

1 回答 1

1

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

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

我的经验法则是,如果有可用的静态函数返回自动释放对象,我会为了方便而使用它们。如果从第二个示例中删除自动释放,则必须手动调用对象上的“释放”来销毁它。您不能在自动释放对象上调用释放,因此在某些情况下您可能希望提前销毁对象(而不是在场景更改时)。

希望有帮助!

于 2012-07-03T08:43:03.673 回答