2011-08-09 9 views
0

詳細ビューを設定しました。ルートビューコントローラのテーブルで選択されている項目によっていくつかのNibファイルが読み込まれますか?iPad DetailViewの状況で、viewDidUnloadが呼び出されていない

Nibsクラスの場合、viewDidUnloadは呼び出されませんが、viewWillDisappearが呼び出され、もちろんdeallocも呼び出されます。

これはなぜでしょうか?

ありがとうございました。

答えて

1

viewDidUnloadは、ビューが表示されなくなったときには通常呼び出されません。これは、通常はdeallocがすべてのメモリダンプを処理するため、viewDidUnloadを最初に呼び出す必要はないからです。

viewDidUnloadが呼び出されたときの例がわかります。 UINavigationControllerがあり、新しいビューをプッシュしたとします。この新しいビューはメモリ使用量が非常に重いので、アプリはリソースを増やそうとします。これは、画面に現在表示されていないビューがロードされているかどうかを確認することで行います。その場合、viewDidUnloadが呼び出されます。ここでは、loadViewで構築したものを理想的に削除します。viewDidLoad。その後、そのビューに戻ると、loadViewまたはviewDidLoadが再び呼び出され、ダンプされた内容がviewDidUnloadに再構築されます。

しかし、詳細ビューを表示するためにメモリを解放する必要がなければ、それは通常の処理では呼び出されません。だからviewWillDisappearが(そしてdealloc)呼び出されますが、決してviewDidUnloadが呼び出されます。

Appleのドキュメントから:のUIViewControllerクラスパージ その景色、メモリ不足の警告が発生した場合

それは後で再びそれらをリロードするか、再作成することができます知っていれば。 この場合、viewDidUnloadメソッドを呼び出して、 に、 というビュー階層に関連付けられているオブジェクト(nibファイルでロードされたオブジェクトを含む)、viewDidLoadメソッドで作成されたオブジェクト、 オブジェクトの所有権を放棄することもできます。オブジェクトは実行時に遅れて に作成され、ビュー階層に追加されました。通常、ビュー コントローラにコンセント(IBOutletキーワードの を含むプロパティまたは未加工変数)が含まれている場合は、viewDidUnloadメソッドを使用して、 が不要になったアウトレットまたはその他のビュー関連データの所有権を放棄する必要があります。

UIViewController Class Reference

関連する問題