のデフォルトの動作はviewcontroller
、ビュー プロパティが最初にアクセスされたときにそのビュー階層をロードし、その後ビュー コントローラーが破棄されるまでメモリ内に保持することです。コードを使用して作成されたビューが、Interface Builder で作成されたビューと異なるという兆候はありません。個人的には、UI コードが非常に速く複雑になり、UI 要素を UI 要素の機能面に分離することで、新しいプログラマーがコード ベースを簡単に維持できるようにするため、アプリのメンテナンスのために InterfaceBuilder を好みます。
ただしdidReceiveMemoryWarning
、アプリに追加のメモリが必要な場合は、メモリ デリゲートを使用してビュー階層を明示的に解放します。
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Add code to clean up any of your own resources that are no longer necessary.
if ([self.view window] == nil)
{
// Add code to preserve data stored in the views that might be
// needed later.
// Add code to clean up other strong references to the view in
// the view hierarchy.
self.view = nil;
}
return;
}
ここで、View Controller のビューが画面上にないかどうかをテストしていることに注意してください。ビューがウィンドウに関連付けられている場合は、ビューとそのサブビューへのビュー コントローラーの強い参照をクリーンアップします。ビューに再作成が必要なデータが格納されている場合、このメソッドの実装では、それらのビューへの参照を解放する前にそのデータを保存する必要があります。保存することで、以前のviewcontrollerのメモリの一部としてメモリに保持するか、coredateまたはその他の永続的な(ディスクキャッシュなど)方法で保存できます。
次にビュー プロパティにアクセスすると、最初とまったく同じようにビューが再読み込みされます。絵的には完全に理にかなっています -

[ソース]