2012-02-20 10 views
2

私は過去4時間を費やして自分のiPadがメモリ不足になるのを試みました。iOSのメモリ不足を強制的に実行する

ああ、皮肉です。

いくつかのロギングコードをテストしたいと思いますが、あまりにも多くのメモリを使用するためにアプリケーションを強制終了する必要がありますが、どれくらいのメモリを割り当てても問題ありません。私はそれを強調するために次のコードを使用しています:

if (tempArray == nil) 
    tempArray = [NSMutableArray array]; 

NSData *data = [NSData dataWithBytes:malloc(10000000) length:10000000]; 

[tempArray addObject:data]; 

私は毎回このフレーム(30回/秒)を実行します。最終的にmallocはNULLを返すだけですが、私のテスターが見ているようなメモリ警告は表示されません。 tempArrayはNSDataオブジェクトを追加しています。

私はデバイス上でこれを実行しています。あなたのアプリにあまりにも多くのメモリを使い、殺すには確実な方法がありますか?

答えて

2

NSDataと同じように、大きな画像を複数回読み込んでから解放しないでください。

+0

OKです。ありがとう、私はmallocは基本的に同じことをやっただろうと思ったが、私はそうは思わない。 –

2

シミュレータを使用しているときにメモリ不足状態をシミュレートすることができます。このオプションは、iOSシミュレータの[ハードウェア]メニューにあります。

+1

私は警告を必要としません、私はアプリを殺す必要があります、シミュレータは警告のみを発行します。 –

+0

あなたのアプリが殺される地点に達したら、それはゲームオーバーです。その意図は、あなたがこれらの警告に応答してあなたができるものを捨てて、あなたのアプリが殺されるのを避けることです。 – Snips

+1

実際には、クラッシュ後に次回の起動時にコンソールログを解析してコンパイルするログコードがいくつかあり、メモリ不足のケースを確実にキャッチするためにテストケースとして必要になりました。 springboardのログには、なぜあなたのアプリが殺されたのかを示す情報があります。これは、ログに記録されたことを確認したいデータです。 –

関連する問題