1

これはもう知っているはずですが、ゲームオブジェクトをいつ割り当てる必要がないのかを決めることができません。

例:ゲームに一時停止ボタンがあります。このボタンはどのようにも割り当てられていません。次のように入力レイヤーを配置します。 pauseButton = [CCSprite spriteWithSpriteFrameName:@"pause.png"];

私もいくつかのラベルでこれを行いました。

ただし、次のようなチュートリアルの助けを借りて、キャラクターオブジェクトをゲームに追加しました:( [[[self alloc]initWithImage] autorelease]; この行はメソッドの一部です)

さて、ゲームオブジェクトを割り当てるかどうかをどのように決定しますか?良い習慣はありますか、それともゲームに追加するすべてのものを割り当て->自動リリースする必要がありますか?

4

1 に答える 1

1

実際、2行は本質的に同一です。 spriteWithSpriteFrameNameCCSprite クラスの静的関数です。autorelease オブジェクトを返します。

initWithImage非静的であるため、最初に割り当てる必要がありますが、自動解放もマークされているため、同じように動作します。

私の経験則では、自動解放オブジェクトを返す静的関数が利用できる場合は、便宜上それらを使用します。2 番目の例から autorelease を削除する場合は、オブジェクトに対して手動で「release」を呼び出して破棄する必要があります。autorelease オブジェクトで release を呼び出すことはできないため、オブジェクトを早期に破棄したい場合があります (たとえば、シーンの変更時ではありません)。

それが役立つことを願っています!

于 2012-07-03T08:43:03.673 に答える