私は大きな問題を抱えており、その理由がよくわかりません。これはケースです:
- Cocos2D で 10 シーンの素晴らしいプロジェクトを作成します。各シーンは、巨大なスプライトを含む本の 1 ページです。Kobold2D 1.0.2 実装を使用します。
- すべてのページには、シングルトン クラスに共通のオブジェクトがあり、LayerColor を介して共通のメニューを配置します。
- スプライトは、PVR.CCZ RGBA4444 の TexturePacker であり、iPad メモリでは、読み込まれたスプライトシートごとに約 16 ~ 20Mb です。
- 次から次への replaceScene には CCTransitionTurnPage を使用します。
- 各ページ(クラス)のinitメソッドで、テクスチャとFrameFileを読み込みます。
- 各ページ(クラス)の onExit メソッドで、テクスチャとframeFileをアンロードします。私は dumpCachedTextureInfo を使用し、テクスチャがメモリから完全にロードおよびアンロードされると言います。
- もちろん、子からすべてのオブジェクトを削除します。すべてのスプライトは、クラスのすべてのメソッドでアクセスする必要があるため、.h のインターフェイス セクションで宣言された共通変数です。
- 私のプロジェクトは、ARC プロジェクトに Kobold2D を統合して作成されています (ただし、添付の Kobold2D プロジェクトでは、互換性の問題のために ARC が有効になっていません)。
実際、プロジェクトを開始すると、すべてが完璧に見えますが、作成したシーン (ページ) ごとにメモリが増加しています。Page1: 30Mb.、Page2: 40、Page 3: 54、Page 4: 65... 7 つまたは 8 つのシーンの後、Instruments、Xcode、または iPad 自体がメッセージなしでアプリケーションをハングさせます (最終的にメモリ不足の警告が表示された Instruments を除く)。 .
各シーンの後にメモリが解放されないのはなぜですか? おそらく、ARC と no super dealloc 変数が原因です。テクスチャが完全にアンロードされているように見えるのに、クラッシュするまでメモリが制御なしで増加しているため、アンロードされていないように見えるのはなぜですか?