Subscribed unsubscribe Subscribe Subscribe

Seasons.NET

ちょっとした技術ブログです

cocos2dのメモリ管理で気をつける事

元記事

cocos2dのメモリ管理について書かれていて非常に興味深かったため、
軽く翻訳してみました。


メモリー増加のチェック

CCDirectorのFPS表示周りをカスタマイズして、横に残メモリを表示している。
残メモリメソッドは、このように実装している。
この残メモリを見ることで、解放し忘れのメモリがないかチェックすることができる。


CCSceneの解放し忘れ防止
CCSceneの解放し忘れによるメモリーリークは、
悪質なので、なるべく早期発見を心がけたい。

よくやる手法としては、CCLogをdeallocに仕込むことだが、
もっとわかりやすい方法は、dealloc時にサウンドを鳴らすことである。


もし、これらで発見できず、メモリーリークしたものは、
原因が特定しづらいため、コメントアウトやコードを削って、
調べていくのがよいだろう。


また、CCSceneをメンバーとして抱えるような実装、
delegateとして持つような場合も注意が必要だ。


なぜなら、delegateに渡す際に、retainしてわたしてしまうと、
本体を解放しても、他が参照していることがよくあり、
deallocが呼ばれず、結果正しく解放されない時が多いのだ。

そのような問題を避けるために、assignを使うことなどを検討するとよい。