2017-01-26 15 views
0

私はノード 'ページ'を追加するシーンがあります。シーンからCCNodeを削除し、それがメモリから解放されていることを確認するにはどうすればいいですか? Cocos2d V3

[self addChild:_page z:-1]; 
私は

[self removeChild:_page]; 

メモリはデバッグを通して見た(同じままシーンからページを削除すると

「のページは」

@property CCNode* page; 

としてヘッダファイルに初期化されますナビゲータ)。

これは、hdイメージ、アニメーション、および物理環境を含む多くのページを追加および削除するため、問題です。いくつかのノードを追加したり削除したりするとメモリ不足の警告が表示され、アプリケーションがクラッシュします。

答えて

0

以下は、メモリからCCNodeのコンテンツのほとんどを削除したコードです。ノードにはオーディオが含まれていないことに注意してください。

実装ファイルの上部に、次の行を追加します。

#import "CCTextureCache.h" 

また、実装ファイルにもonExitメソッドを追加します。

-(void)onExit{ 
    [super onExit]; 
    [self removeAllChildren]; 
    [[CCTextureCache sharedTextureCache]removeUnusedTextures]; 
} 

テクスチャがアプリを実行し、リアルタイムであなたの記憶を監視するために、Xcodeでデバッグナビゲーターを使用し

[[CCTextureCache sharedTextureCache]dumpCachedTextureInfo]; 

を使用することができます削除されたことを確認します。

その他/削除ノードの追加に関する研究:あなたのアプリがデバイスの特定のメモリのしきい値に達するとので、あなたがメモリについて「心配する必要はありません」cocos2d V3.Xで

を、あなたが取得します "低メモリ警告 '、CCAppDelegate自動的にキャッシュされたデータを削除します。

// purge memory 
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
{ 
    [[CCDirector sharedDirector] purgeCachedData]; 
} 

しかし、あなたは大きな、時には、複数のテクスチャファイルをロードし、メモリのしきい値を超えたアプリのチャンスがあるかもしれない場合には、メモリを低く維持することは有益であり得ます。

未使用のデータを削除すると、プログラムに影響するメモリリークやバグの可能性があるコードを削除するのにも役立ちます。

+0

もし私が思い出すなら、潜在的な保持サイクル(アニメーションなど)を殺すために何かを削除するには 'クリーンアップ:はい'する必要があります。 – YvesLeBorg

関連する問題