2012-01-15 8 views
4

ビューコントローラでコンテンツを表示するために使用されるデータ構造を初期化するのに最適な場所はどれですか:initまたはviewDidLoadデータ構造を初期化する場所:initまたはviewDidLoad?

どちらの場合でも、私はそれらをリリースする必要があります:deallocviewDidUnloadまたはdidReceiveMemoryWarning

+2

UIViewControllerのサブクラスに関するレコードの場合、選択肢は 'initWithNibName:bundle:'と 'viewDidLoad'です。プレーンな 'init'はこれらのクラスのために指定された初期化子ではありません。 – NJones

答えて

3

オールエンコンサルティングの回答は、「あなたのビューのライフサイクルに依存します。」です。各メソッドには、ビューの読み込み方法や表示方法に関連した独自の場所があります。

しかし、実際にはviewDidLoadが最初に適しています.XIBビューはすでにインスタンス化されているため、プロパティを設定できます。たくさんのビューを読み込んだりアンロードしたりする場合は、かなり静的な純粋なデータをinitコールにプッシュすることができます。

viewWillAppearは、ビューのライフサイクルと、ビューが表示されていない間にデータがどのくらい変更されるかによって異なります。

ETA:補足的な呼び出しであなたのメモリを解放します。 deallocでは、viewDidUnloadまたはviewDidDisappearです。 didReceiveMemoryWarningは、初期化する場所に関係なく常に何かをアンロードする必要があります。また、コードがアクティブになったらデータを再読み込みするのに十分スマートにする必要があります。

+0

NJonesは上記の質問に対する彼のコメントで、 'init'はデフォルトでinitWithNibName:bundle:が指定されたイニシャライザを意味すると言っています。私は鉱山を少し並べ替える傾向がありますが、それは個人的なスタイルの問題です。重要なことは、指定された初期化子が何であるかを明確にすることです(常に他のすべてのイニシャライザ呼び出しによって呼び出される方法の1つで、あなたの 'init'サイクルで重い持ち上げ)。 –

関連する問題