Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

< Previous PageNext Page >

レスポンダとレスポンダチェーン

コアアプリケーションクラスのオブジェクト(NSApplicationNSWindowNSView)はレスポンダです。これらはNSResponderを直接的または間接的に継承するクラスのインスタンスです(Figure 6-19を参照)。この抽象クラスは、イベントに応答できるオブジェクトについて、それらのインターフェイスおよび期待される動作を定義します。NSResponderのサブクラスでは、この動作の全部または一部を実装します。


Figure 6-19  NSResponderとその直接のサブクラス

Figure 6-19 NSResponderとその直接のサブクラス

注: これ以外に、NSResponderを直接継承するApplication Kitのクラスとして、NSWindowControllerNSDrawerの2つがあります。NSWindowControllerはCocoaドキュメントアーキテクチャの一部ですが(“「Cocoaのその他のアーキテクチャ」”を参照)、これらのクラスはどちらもCocoaのコアアプリケーションアーキテクチャの中心ではありません。

以下に示すように、NSResponderクラスは、コアアプリケーションアーキテクチャの3つの主要なパターンまたはメカニズムに対応するインターフェイスを定義します。

レスポンダチェーンはApplication Kitのイベント処理アーキテクチャにおける中心的なメカニズムです。レスポンダチェーンは一連のレスポンダオブジェクトが連結されたもので、このチェーンに沿ってイベントメッセージやアクションメッセージが受け渡しされます。Figure 6-20に示すように、あるレスポンダオブジェクトがイベントまたはアクションを処理できない場合(つまり、メッセージに応答できなかったり、イベントを認識できない場合)、そのレスポンダオブジェクトから、チェーン内の次のレスポンダにメッセージが再送信されます。メッセージは、処理されるまで、チェーンの上位(のオブジェクト)に向かって順に渡されます(処理されなかったメッセージは破棄されます)。


Figure 6-20  レスポンダチェーン

Figure 6-20 レスポンダチェーン

Application Kitは、アプリケーション内のオブジェクトを構築する際、ウインドウごとにレスポンダチェーンを準備します。レスポンダチェーン内で不可欠なオブジェクトは、NSWindowオブジェクトとそのビュー階層です。階層内で下位にあるビューには、上位にあるオブジェクトよりも先に、イベントメッセージおよびアクションメッセージを処理する機会が与えられます。NSWindow最初のレスポンダへの参照を維持しています。First Responderは、通常はウインドウ内で現在選択されているビューであり、メッセージに最初に応答する機会がそのビューに与えられます。イベントメッセージの場合、レスポンダチェーンの終わりは、通常はイベントが発生したウインドウを管理しているNSWindowオブジェクトです。ただし、別のレスポンダを次のレスポンダとしてNSWindowオブジェクトの後に追加することができます。

アクションメッセージの場合には、レスポンダチェーンがさらに複雑になります。アクションメッセージのレスポンダのチェーンは次の2つの要素によって決まります。

NSResponderクラスでは、エラーの表示、復旧、メッセージのディスパッチ、アプリケーションヘルプその他の機能を備えたメソッドも宣言されています。

参考資料: レスポンダとレスポンダチェーンの詳細については、『About the Responder Chain』を参照してください。



< Previous PageNext Page >


Last updated: 2006-05-23




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
Get information on Apple products.
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Copyright © 2007 Apple Inc.
All rights reserved. | Terms of use | Privacy Notice