cocos2dのメモリ管理で気をつける事
cocos2dのメモリ管理について書かれていて非常に興味深かったため、
軽く翻訳してみました。
メモリー増加のチェック
CCDirectorのFPS表示周りをカスタマイズして、横に残メモリを表示している。
残メモリメソッドは、このように実装している。
この残メモリを見ることで、解放し忘れのメモリがないかチェックすることができる。
CCSceneの解放し忘れ防止
CCSceneの解放し忘れによるメモリーリークは、
悪質なので、なるべく早期発見を心がけたい。
よくやる手法としては、CCLogをdeallocに仕込むことだが、
もっとわかりやすい方法は、dealloc時にサウンドを鳴らすことである。
もし、これらで発見できず、メモリーリークしたものは、
原因が特定しづらいため、コメントアウトやコードを削って、
調べていくのがよいだろう。
また、CCSceneをメンバーとして抱えるような実装、
delegateとして持つような場合も注意が必要だ。
なぜなら、delegateに渡す際に、retainしてわたしてしまうと、
本体を解放しても、他が参照していることがよくあり、
deallocが呼ばれず、結果正しく解放されない時が多いのだ。
そのような問題を避けるために、assignを使うことなどを検討するとよい。