6

私は個人的didReceiveMemoryWarningに以前に呼ばれたのを見たことがありません。呼び出されるメモリ使用量の既知のしきい値はありますか?

4

3 に答える 3

9

システムのメモリが不足している場合に呼び出されるため、UIViewController.

シミュレーターでメモリ警告をシミュレートして、Hardware > Simulate Memory Warning何が起こるかを確認できます。

iOS6 より前のバージョンをサポートしている場合は、Apple のドキュメントから次の点に注意することが重要です。

iOS 6 より前のバージョンでは、メモリ不足の警告が発生したときに、 UIViewController後で再読み込みまたは再作成できることがわかっている場合、クラスはそのビューをパージしていました。これが発生した場合は 、 メソッドviewWillUnloadviewDidUnloadメソッドも呼び出して、ビュー階層に関連付けられているすべてのオブジェクトの所有権をコードに放棄する機会を与えます。これには、nib ファイルからロードされたオブジェクト、viewDidLoadメソッドで作成されたオブジェクト、実行時に遅延して作成されたオブジェクトが含まれます。ビュー階層に追加されます。iOS 6 では、ビューがパージされることはなく、これらのメソッドが呼び出されることもありません。メモリが少ないときにView Controllerが特定のタスクを実行する必要がある場合は、 didReceiveMemoryWarningメソッドをオーバーライドする必要があります。

しきい値については、12MB を超えないようにしています。

于 2012-10-19T08:38:25.790 に答える
2

ドキュメントから、システムが利用可能なメモリの量が少ないと判断した場合、このメソッドが呼び出されます。アプリの割り当てがアプリで使用可能なメモリの量を超えると、このメソッドが呼び出されます。http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html を参照してください。

于 2012-10-19T07:24:50.273 に答える
2

いいえ。Springboard が、デバイスのメモリを使用しているリソースが多すぎると判断したときに呼び出されます。他のアプリがあなたの電話でどれだけのものを使用しているかに応じて、遅かれ早かれ起こる可能性があります. それがいつ起こるかを確実に計算したり、当てにしたりすることはできません。

また、割り当てなどのツールで報告されるメモリは、必ずしもアプリのフットプリントと相関しているとは限らないため、あまり使用していないように見える場合もありますが、それでもこの警告が表示される可能性があることに注意してください。

于 2012-10-19T06:59:04.183 に答える