web-dev-qa-db-ja.com

iOSのファイル所有者と最初のレスポンダー-Xcodeとは何ですか?

IOSのファイル所有者と最初のレスポンダー-Xcodeとは何ですか?

88
Matrix

ファイル所有者は、インスタンス化されたruntimeオブジェクトであり、nibのロード時にnibのコンテンツとそのアウトレット/アクションを所有します。任意のクラスのインスタンスにすることができます-ツールパレットのIDタブを見てください。

ファイル所有者は、アプリケーションコードとnibファイルのコンテンツ間のメインリンクです。

たとえば、UILabelのIBOutletを持つUIViewControllerサブクラスがあるとします。インターフェースビルダーでは、ファイルの所有者はUIViewControllerと同じクラスに設定されます。実行時にnibがロードされると、view controllerが所有者であるため、nibで定義されたアウトレットとアクションのバインディングがView Controllerのインスタンスにバインドされます。

ペン先は次を使用してロードされます:

[[NSBundle mainBundle] loadNibNamed:@"NibName" owner:nil options:nil];

所有者パラメーターは特に重要です。これは、ロードされるnibのコンテンツ(アウトレット、アクション、およびオブジェクト)を所有するクラスのランタイムインスタンスです。

うまくいけばそれは明らかです。これを職場で見るには、View Controllerを備えた新しいiPhoneプロジェクトを作成します。 Nibファイルを開き、IDタブを確認します。

ファーストレスポンダーは、イベントに応答できるレスポンダーチェーンの最初のオブジェクトです。レスポンダーチェーンは、イベントに応答できるオブジェクトのランタイムコレクション(より正確には階層)です。たとえば、ビューのあるウィンドウがあり、そのビューにテキストフィールドがあるとします。

そのテキストフィールドにフォーカスがある場合、チェーンの最初のレスポンダーとして知られています。したがって、最初のレスポンダーにメッセージを送信すると、最初にテキストフィールドに送信されます。テキストフィールドがメッセージを処理できない場合、メッセージはnext responderに送信されます。そして次。次に、レスポンダーチェーンの最後に到達するか、何かがイベントを消費するまで(iirc)。

レスポンダーチェーンについて読む価値があります。詳細については、Appleのドキュメントを参照してください。

168
dannywartnaby