7

「coredata を使用する」にチェックを入れた xcode ナビゲーション コントローラー テンプレートに基づいて、多くの簡単なテスト アプリを作成することで、coredata を学習してきました。

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

私は awakeFromNib が何をしているのかを把握し、それを削除したので、アプリのデリゲートは特定のビューに関連付けられなくなりました。(したがって、RootViewController をロードしたい場合は、それを通常のビューとしてロードし、独自の viewDidLoad を使用してビューの managedObjectContext を初期化します)。

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

4

1 に答える 1

5

すべてのメソッドは、さまざまなタイミングでさまざまな状況で起動します。

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

どちらの場合も、インスタンスが最初にロードされたときに一度だけ実行したい機能のみを配置します。たとえば、よくある nubie の間違いはviewDidLoad、ビューが表示されるたびに実行する必要があるコードを配置することです。詳細ビューを開き、詳細ビューを閉じると再び表示されるマスター ビューのように言います。マスター ビューのコードが含まれている場合は、マスター ビューがviewDidLoad最初に読み込まれたときにのみ実行されますが、マスター ビューが消えて再表示されたときは実行されません。

通常、他のビューを初期化したり、アプリケーション デリゲートが nib から起動した状態で多くのことを行ったりすることはありません。これは通常、 で実行されapplicationDidFinishLaunchingます。

于 2011-06-23T14:05:47.907 に答える