2011-06-23 9 views
7

私は、 "coredataを使う"というチェックを入れたxcode Navigationコントローラテンプレートに基づいて、たくさんの簡単なテストアプリを作ることで、coredataを学んできました。awakeFromNibのベニフィッツ?

他のビューをコントローラに追加してロードシーケンスを変更するので、App DelegateのawakeFromNibメソッドが問題の原因となっています。そのため、RootViewControllerを2番目または3番目の選択肢にすることができます。

私はawakeFromNibが何をしているのか分かりましたが、私はそれを削除して、アプリケーションデリゲートが特定のビューに結びついていないようにしました。 (RootViewControllerをロードしたいときは、通常のビューとしてロードし、独自のviewDidLoadを使用してビューのmanagedObjectContextを初期化します)。

私の質問:AppDelegateでawakeFromNIbを使用すると、パフォーマンスの向上やその他の利点はありますか?それともviewDidLoadメソッドからやっているのと同じことをする別の方法ですか?

答えて

5

すべてのメソッドは、異なる時間と異なる状況で起動します。

awakeFromNibは、クラスに関連付けられたnibファイルがディスクからロードされたときに呼び出されます。ペン先を所有できるクラスであれば、それを使うことができます。 viewDidLoadは、ビューコントローラによってのみ使用されます。これは通常、ペン先からロードするときに呼び出されますが、メモリ内に作成されたビューで呼び出すこともできます(非常にまれな状況です)。

どちらの場合でも、インスタンスが最初にロードされます。例えば。よく見られる間違いは、ビューが現れるたびに実行する必要があるコードをviewDidLoadに入れることです。マスタービューの場合と同様に詳細ビューを開き、詳細ビューが閉じられると再び表示されます。マスタービューのコードがviewDidLoadの場合は、マスタービューが初めてロードされたときにのみ実行されますが、マスタービューが消えて再び表示される以降の時間は実行されません。

一般に、他のビューを初期化したり、アプリデリゲートがnibから目を覚ましたりすることはほとんどありません。これは通常applicationDidFinishLaunchingで行われます。

+0

ありがとう、ありがとう。私はちょうどアプリデリゲートでawakeFromNibを取り除き、初期化コードをviewDidLoadに移動するとパフォーマンスが低下する可能性があると心配していました。 – nick

関連する問題