UIViewControllerのメモリ割り当てや解放処理一覧
基本的な所を抑えていなかったのでiOS View Controllerプログラミングガイドのp.42から転記。
タスク | メソッド | 説明 |
---|---|---|
View Controllerで必要な重要なデータ構造を割り当てる | 初期化メソッド | カスタム初期化メソッドには(initという名前であるか、それ以外の名前であるかに関わらず)、常にView Controllerオブジェクトを既知の適切な状態に設定する責任があります。これには、適切な操作を保証するために必要なあらゆるデータ構造の割り当てが含まれます。 |
ビューオブジェクトを作成する | loadView | プログラムによってビューを作成する場合にのみ、 loadViewメソッドのオーバーライドが必要になりま す。nibファイルからビューをロードする場合は、 initWithNibName: bundle:メソッドを使用して、適 切なnibファイルの情報を使用してView Controllerを初期 化するだけです。 |
ビューに表示する データの割り当てや ロードを行う | viewDidLoad | ビューオブジェクトに関連付けられているデータはすべて、viewDidLoadメソッドで作成またはロードしなければなりません。このメソッドが呼び出された時点 で、ビューオブジェクトの存在と、それが既知の適切な状態にあることが保証されます。 |
ビューオブジェクト への参照を解放する | viewDidUnload dealloc | クラスのアウトレットやその他のメンバ変数を使用し て、ビュー階層内のビューオブジェクトを保持する場 合は、そのビューが不要になったら、それらのアウトレットを必ず解放しなければなりません。ビューオブ ジェクトを解放したら、安全のために、必ずアウトレッ トや変数をnilに設定します。ビューが解放されるタイ ミングの詳細については、「ビュー管理サイクルの理 解」 (30 ページ)を参照してください。 |
ビューが表示されていないときに必要のないデータを解放する | viewDidUnload | ビュー固有のデータのうち、ビューが再びメモリにロー ドされたときに簡単に再作成できるデータを解放するには、viewDidUnloadメソッドを使用します。ただし、 データの再作成にあまりに時間がかかる場合は、それに対応するデータオブジェクトをここで解放する必要はありません。代わりに、didReceiveMemoryWarningメソッドでこれらのオブジェクトを解放することを検討するべきです。 |
メモリ不足通知に応 答する | didReceiveMemory-Warning | View Controllerに関連付けられているカスタムデータ構造のうち、重要でないものを解放するには、このメソッドを使用します。このメソッドは、ビューオブジェクトへの参照を解放するためには使用しませんが、 viewDidUnloadメソッドで解放しなかったビュー関連のデータ構造を解放するために使用します(ビューオブジェクトそのものは、必ずviewDidUnloadメソッドで解放しなければなりません)。 |
View Controllerで必 要な重要なデータ構 造を解放する | dealloc | View Controllerに関連付けられているすべてのデータ構造を解放するために、このメソッドを使用します。View Controllerにnil以外の値を持つアウトレットや変数が残っている場合は、ここでそれらを解放しなければな りません。 |