2

XCode4 でテンプレートからナビゲーション ベースのアプリケーションを作成すると、MainWindow.xib にナビゲーション コントローラーがあり、子として RootViewController があります。

正確にはいつ:

  1. RootViewController のインスタンスを作成しますか?
  2. このインスタンスをナビゲーション コントローラの子として関連付けますか?

特に、applicationDelegate の "didFinishLaunchingWithOptions" メソッドのタイミングと、それが発生するタイミングに関して。

4

2 に答える 2

4

plist に示されているように、MainWindow はメイン nib ファイルのベース名です。そのため、起動時にメイン ウィンドウ nib ファイルをロードするために、plist に基づいて生成される隠しコードがいくつかあります。これは、didFinishLaunchingWithOptions の前に発生します。

MainWindow nib がロードされるとすぐに、バックグラウンドで一連の処理が行われます。リソース プログラミング ガイドの Nib オブジェクトのライフ サイクルを参照してください。

それらの手順の 1 つは、

nib オブジェクト グラフ データを解凍し、オブジェクトをインスタンス化します。

そして、ほぼ最終的には次のようになります。

一致するセレクターを定義する nib ファイル内の適切なオブジェクトに awakeFromNib メッセージを送信します。 ... iOS では、このメッセージは nib ロード コードによってインスタンス化されたインターフェイス オブジェクトにのみ送信されます。File's Owner、First Responder、またはその他のプロキシ オブジェクトには送信されません。

把握できる最初の方法は ですawakeFromNib

3 つの質問に答えるには:

  1. MainWindo nib ファイルの読み込み中
  2. はい、インターフェースビルダーでnibファイルを見てください
  3. すべては didFinishLaunchingWithOptions の前に発生します
于 2011-04-23T12:10:44.287 に答える
1

これらはすべて、コードがに到達する前に実行されますapplication:didFinishLaunchingWithOptions:UIApplicationMain()関数(アプリの関数から呼び出されるとMainWindow.nibmain()が読み込まれます。NIBファイルが読み込まれると、NIBファイル内のすべてのオブジェクトがインスタンス化され、オブジェクト間の接続が確立されます。

これは、ViewController自体がすでにに存在することを意味することに注意してくださいapplication: didFinishLaunchingWithOptions:。ビューコントローラのビューについても同じではありません。ビューコントローラは、最初にアクセスしたときにビューを遅延ロードします。

于 2011-04-23T12:00:36.087 に答える