シーンのdealloc
メソッドは正確にいつ呼び出されますか? Cocos2D
別のシーンがロードされたときですか?それとも、シーンの読み込みが完了した後ですか?
さらに、上書きする予定がある場合、dealloc メソッドには何が必要ですか?
どうやら、cocos2D
シーンの割り当てが解除されると、シーンにアタッチされているすべてのノードが自動的に削除されます。ただし、上書きする場合は、具体的にどのメソッドを呼び出す必要がありますか? では、シーンを管理して 100% 漏れがないことを確認するにはどうすればよいでしょうか? 前もって感謝します!
2 に答える
子としてシーンに追加されないシーンクラスに割り当てるすべてのオブジェクトは、明示的に解放する必要があります。
replaceScene
シーンを(メソッドで)別のシーンオブジェクトに置き換えるか、シーンスタックからポップすると、シーンが解放されます(ほとんどの場合、他の場所に保持されていない場合は割り当てが解除されます) 。
ソースコード(非常に役立つコメントが含まれています)を調べて、シーンクラスをカスタマイズする場合に正確に何をすべきかを学ぶことを常にお勧めします。
CCScene のデアロケータは、他のオブジェクトと同じ規則に従います。CCScene への参照カウントがゼロになると実行されます。
デフォルトでは、シーンはそれを置き換えようとしている別のシーンを気にしませんが、トランジションでシーンを変更している場合、2 つのシーンが同時に存在する期間があります。トランジションが終了すると、トランジションは最初のシーンへの参照を解放します。これはおそらく最後のそのような参照であり、最初のシーンの割り当てが解除されます。
シーン デアロケータに CCLOG を配置して、いつ実行されるかを正確に確認します。念のため一つずつ入れています。
alloc
一般に、 、new
またはで始まるメソッドを使用して作成したcopy
オブジェクトは、Cocos2D オブジェクトであるかどうかにかかわらず、手動で解放します。Cocos2D などの他の作成方法では、オブジェクトを自分で手動でnode
選択しない限り、手動で解放する必要はありませんretain
。これは、別のノードに子としてすぐに追加しない場合に推奨される可能性があります。
あなたが言ったように、ノードを子として別のノードに追加しても、追加が必要になるわけではありませんrelease
。Cocos2D がそれを処理します。