0

didReceiveMemoryWarningが呼び出されているのに、viewDidUnloadが呼び出されていないという状況が発生しています。didReceiveMemoryWarningのドキュメントには次のように書かれています。

このメソッドのデフォルトの実装は、ViewControllerがそのビューを安全に解放できるかどうかを確認します。これは、ビュー自体にスーパービューがなく、nibファイルから、またはカスタムのloadViewメソッドを使用して再ロードできる場合に可能です。ビューを解放できる場合、このメソッドはビューを解放し、viewDidUnloadメソッドを呼び出します。

ビューコントローラはその時点では表示されていませんが、モーダルの親です(通常、メモリ警告が発生したときにイメージピッカーの下にあります)。ビューはリリースできるはずのようですが、何かが足りないのかもしれません。

これが重要な理由は、ビューがリロードされたときにviewDidLoadが呼び出されることを前提として、didReceiveMemoryWarningにキャッシュされたデータを解放しているためです。ただし、viewDidUnloadが呼び出されていないため、ビューが再度表示されているときにviewDidLoadも呼び出されません...

4

1 に答える 1

0

コントローラーのビューには、モーダル ビュー コントローラーをホストしている場合でもスーパービューがあります (結局、そのコントローラーのビューは、それを提示するコントローラーのビューのサブビューになります)。したがって、そのビューはアンロードされません。でキャッシュ データを再度取得することをお勧めします-viewWillAppearAnimated:

于 2010-09-10T18:22:18.513 に答える