2012-07-02 88 views
1

我現在應該知道這一點,但是當我不需要時,我不能決定何時分配遊戲對象。Cocos2D:需要分配什麼?

例如:我在我的遊戲中有一個暫停按鈕。這個按鈕沒有以任何方式分配,我把它放在我的輸入圖層中,如下所示: pauseButton = [CCSprite spriteWithSpriteFrameName:@"pause.png"];

我也用一些標籤做了這個。

然而,我將我的角色對象的遊戲從教程一些幫助,比如: [[[self alloc]initWithImage] autorelease]; (此行是方法的一部分)

嘛,怎麼做一個決定是否要分配遊戲對象與否?有沒有好的做法,還是應該分配 - >自動釋放我添加到遊戲中的所有內容?

回答

1

實際上2條線基本相同。 spriteWithSpriteFrameName是CCSprite類的靜態函數。它返回一個autorelease對象。

initWithImage是非靜態的,因此您需要先分配它,但由於它也標記爲autorelease,因此它的行爲方式相同。

我的經驗法則是,如果有可用的靜態函數返回自動釋放對象,爲方便起見,我使用它們。如果你從第二個例子中刪除autorelease,你將不得不手動調用對象的「釋放」來銷燬它。你不能在autorelease對象上調用release,所以可能會出現你想要提早銷燬對象的情況(而不是在場景變化時)。

希望有幫助!

+0

是的,這清理了很多東西,謝謝!雖然,initWithImage是一個包含'initWithSpriteFrameName:@'的方法char0.png'這不會返回一個autorelease對象嗎?再次感謝Arbel! – Alouette

+0

對,如果它標記爲init,它將需要分配並且不會返回一個autorelease除非你指定它。 – Arbel

相關問題