cocos2d-iphoneでグラフィックを使用するノードを完全に消去する方法がわかりません。タイルマップまたはスプライトからテクスチャを正しく廃棄する
どういう意味ですか?まあ、例えば、私はCCTMXTiledMap
を持っています。いくつかのテクスチャを使用しています。さて、私はもはやこのタイルマップを使用する必要はないので、私はそれを殺す、と私はそのようなテクスチャも殺したと仮定し、メモリは解放されます。
私は[[CCTextureCache sharedTextureCache] dumpCachedTextureInfo];
を使用して現在メモリに保持されているテクスチャに関する情報を取得しています。
CCTMXTiledMap *map = [CCTMXTiledMap tiledMapWithTMXFile:@"myMap.tmx"];
[self addChild:map z:0];
[[CCTextureCache sharedTextureCache]
dumpCachedTextureInfo]; // I get 32MB usage.
[self removeChild:map cleanup:YES]; // I assume this will "kill" the map.
[[CCTextureCache sharedTextureCache]
dumpCachedTextureInfo]; // I STILL get 32MB usage
ご覧のとおり、子からマップを削除しても、実際に使用されているテクスチャは消去されていないようです。
メモリを解放するにはどうすればいいですか?私はCCSprites
などと同じことが起こると思う。CCTextureCache
にAcoording、私はちょうど私のアプリケーションがクラッシュするまで、スタックメモリを保持します。
注::[[CCTextureCache sharedTextureCache] removeAllTextures];
のようなものを使用してすべてをクリーンアップすることができます。しかし、それは非常に効率的ではないようです。
CCSpriteはどうですか?どのようにあなたのCCSpritesを処分しますか? – Voldemort
hmmm ...私はそれに答える前にココのコードを読んでいます:)私は、その親からスプライトを削除すると、キャッシュの保持カウントが下がり、removeUnusedTexturesがそれを吐いてフラッシュしますメモリを再利用するためのテクスチャ。 100%確実ではありません。 – YvesLeBorg
@Omega:小さい慈悲のために神に感謝、仮定は正しいです。 removeUnusedTexturesはプレーンなバニラスプライト(親がnil)を削除します。クイックテストを実行することでこれを確認しました。 – YvesLeBorg