この問題は私には起こりませんでした。UINavigationController内にUIViewControllerがあります。メモリ警告を受信すると(レベルは気にしないでください)、表示viewDidUnload
されているコントローラーのメソッドが呼び出されるため、ビューがアンロードされ、すばらしい黒い画面(上部にナビゲーションバーが表示されます)が表示されます。
iOS4.3.3のiPad1でテストしています。
助言がありますか?
この問題は私には起こりませんでした。UINavigationController内にUIViewControllerがあります。メモリ警告を受信すると(レベルは気にしないでください)、表示viewDidUnload
されているコントローラーのメソッドが呼び出されるため、ビューがアンロードされ、すばらしい黒い画面(上部にナビゲーションバーが表示されます)が表示されます。
iOS4.3.3のiPad1でテストしています。
助言がありますか?
私の理解では、viewDidUnload
メソッドは(スーパークラス)のdidRecieveMemoryWarning
関数によって呼び出されます。UIViewController
基本的に、iOSはいくつかの警告を出し、メモリ使用量が減少することを期待しています。これらを無視し続けると、OSはアプリを強制終了します。
ただし、場合によっては、一部のビューを稼働させ続けることが重要であるため、これを回避する方法は、didRecieveMemoryWarning
メソッドをオーバーライドするだけで、メソッド内では何もしないことです。
または、さらに良いことself
に、が現在のビューであるかどうかを確認し、そうである場合はself.navigationController.visibleViewController
、メモリ警告呼び出しをに渡さないでください[super didRecieveMemoryWarning]
。
画像キャッシュなどを保持している場合は、代わりにそれらを空にします。
HTH
Apple
メモリ管理ガイドラインによるとviewcontroller
、重大な状況でメモリ警告を受信するとviewDidUnload
、ビューを解放してメモリを管理できるように直接呼び出します。
実際には、ビューを再作成するときに役立つ一時データを削除する機会を提供します。あなたUIViewCotroller
はあなたのルートviewcontroller
であるため、navigationcontroller
olyナビゲーションバーが表示され、ビューがアンロードされます。
コントローラーのメモリ不足の状況でviewDidUnloadを受け取ります。この場合、iOSはビューが不要になったと判断します。AppleはiOSの新しいバージョンでの実装にいくつかの改善を加えたので、5.xで何が起こるかを見るのはもっと悪いかもしれないことを覚えておいてください。次に、ViewControllerの階層を確認する必要があります。