0

私はすでに-(void) handleMemoryWarning:(NSNotification*)AppDelegate で関数通知を処理しており、かなりうまく機能しています。

プログラム内のすべてのメモリ リークを処理するのにかなりの時間を費やしました。

しかし、メモリ警告レベル 2 または場合によっては 3 を受け取った後でも、メモリ リークが発生し、最終的にはメモリ クラッシュが発生することがあります。

メモリが原因でアプリがクラッシュする直前に、データを収集してサーバーに送信する方法はありますか?

私は Crittercism を使用して他の例外を処理しています。

既存のコードでメモリを削減する方法を提供しないでください。

4

2 に答える 2

1

これを使用してメモリをクリアします

[[CCDirector sharedDirector] purgeCachedData];
[[CCTextureCache sharedTextureCache] removeAllTextures];
[CCTextureCache purgeSharedTextureCache];
[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];
[CCSpriteFrameCache purgeSharedSpriteFrameCache];

とで

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
  //you just save your data.
}
于 2012-10-05T07:11:47.377 に答える
0

ロードされたテクスチャを確認するには、呼び出すことができます

[[CCTextureCache sharedTextureCache] dumpCachedTextureInfo];

ロードされたすべてのテクスチャとメモリ内のサイズをコンソールに出力します。すべてのデバイスでメモリ クラッシュを回避するには、アプリで 100 Mb を超えるメモリを使用しないでください (Retina デバイスを意味します)。そのような量でもメモリ警告が発生しますが、クラッシュは発生しません。

アプリがリソースの読み込みを開始する場所を確認するには、インストルメントからアクティビティ モニターを使用できます。アプリが使用しているメモリの量を確認できます。接続された計測器は使用メモリの増加を引き起こしますが、アクティビティ モニターが接続されているとアプリがクラッシュし、それなしではクラッシュしない場合は、メモリ使用量が重要であり、削減する必要があることを意味します。

于 2012-10-05T07:04:45.560 に答える