6

この問題は私には起こりませんでした。UINavigationController内にUIViewControllerがあります。メモリ警告を受信すると(レベルは気にしないでください)、表示viewDidUnloadされているコントローラーのメソッドが呼び出されるため、ビューがアンロードされ、すばらしい黒い画面(上部にナビゲーションバーが表示されます)が表示されます。

iOS4.3.3のiPad1でテストしています。

助言がありますか?

4

3 に答える 3

1

私の理解では、viewDidUnloadメソッドは(スーパークラス)のdidRecieveMemoryWarning関数によって呼び出されます。UIViewController基本的に、iOSはいくつかの警告を出し、メモリ使用量が減少することを期待しています。これらを無視し続けると、OSはアプリを強制終了します。

ただし、場合によっては、一部のビューを稼働させ続けることが重要であるため、これを回避する方法は、didRecieveMemoryWarningメソッドをオーバーライドするだけで、メソッド内では何もしないことです。

または、さらに良いことselfに、が現在のビューであるかどうかを確認し、そうである場合はself.navigationController.visibleViewController、メモリ警告呼び出しをに渡さないでください[super didRecieveMemoryWarning]

画像キャッシュなどを保持している場合は、代わりにそれらを空にします。

HTH

于 2012-08-29T23:38:27.670 に答える
0

Appleメモリ管理ガイドラインによるとviewcontroller、重大な状況でメモリ警告を受信するとviewDidUnload、ビューを解放してメモリを管理できるように直接呼び出します。

実際には、ビューを再作成するときに役立つ一時データを削除する機会を提供します。あなたUIViewCotrollerはあなたのルートviewcontrollerであるため、navigationcontrollerolyナビゲーションバーが表示され、ビューがアンロードされます。

于 2012-08-27T19:26:14.183 に答える
0

コントローラーのメモリ不足の状況でviewDidUnloadを受け取ります。この場合、iOSはビューが不要になったと判断します。AppleはiOSの新しいバージョンでの実装にいくつかの改善を加えたので、5.xで何が起こるかを見るのはもっと悪いかもしれないことを覚えておいてください。次に、ViewControllerの階層を確認する必要があります。

于 2012-08-28T12:33:01.997 に答える