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


回答:


170

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

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

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

ニブは以下を使用してロードされます:

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

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

うまくいけばそれは明らかです。これを実際に見るには、ビューコントローラを備えた新しいiPhoneプロジェクトを作成します。Nibファイルを開き、IDタブを確認します。

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

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

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


1
@dannywartnaby:詳細な説明!! +1
Jayprakash Dubey

1
素晴らしい説明!
TMin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.