35

viewControllerawakeFromNibが割り当てられ、初期化された直後に呼び出されますか?awakeFromNibビューコントローラのはどの正確な時点で呼び出されますか?デバッグセッションから、rootViewControllerの場合は実行さawakeFromNibれるまで呼び出されないことがわかります。[self.window makeKeyAndVisible]

4

2 に答える 2

49

awakeFromNibビューとそのサブビューが割り当てられ、初期化された後に呼び出されます。ビューのすべてのアウトレットインスタンス変数が設定されることが保証されています。

編集:イベントの詳細な再集計:

インスタンス化プロセス中に、アーカイブ内の各オブジェクトはアーカイブ解除され、そのタイプに適したメソッドで初期化されます。Cocoaビュー(および関連するInterface Builderパレットを使用してカスタマイズできるカスタムビュー)は、initWithCoder:メソッドを使用して初期化されます。カスタムビューは、initWithFrame:メソッドを使用して初期化されます。nibでインスタンス化されたカスタムクラスは、initメソッドを使用して初期化されます。

すべてのオブジェクトがアーカイブからインスタンス化および初期化されると、nibローディングコードは、各オブジェクトのアウトレットと対応するターゲットオブジェクト間の接続を再確立しようとします。カスタムオブジェクトにアウトレットがある場合、NSNibオブジェクトはInterfaceBuilderで作成した接続を再確立しようとします。まず、オブジェクト独自のメソッドを使用して接続を確立しようとすることから始まります。NSNibオブジェクトは、接続が必要なアウトレットごとに、オブジェクト内でsetOutletName:の形式のメソッドを探します。そのメソッドが存在する場合、NSNibオブジェクトはそれを呼び出し、ターゲットオブジェクトをパラメーターとして渡します。その正確な名前でセッターメソッドを定義しなかった場合、NSNibオブジェクトは、対応するアウトレット名を持つインスタンス変数(タイプIBOutlet id)をオブジェクトで検索し、その値を直接設定しようとします。最後に、すべてのオブジェクトが完全に初期化された後、それぞれ がawakeFromNibメッセージを受け取ります。

ソース

編集2:これはストーリーボードからロードされたビューコントローラーには適用されません。

于 2012-02-03T01:04:56.777 に答える
-3

コーダーがまだ初期化していないオブジェクトをロードしたい場合。

Exp:Control inは、必要のないUITableViewCellコード呼び出し時に初期化されます。awakeFromNibcellforrow

于 2014-02-12T06:54:30.773 に答える