|
|
Log In | Not a Member? |
Contact ADC |
| < Previous PageNext Page > |
コアアプリケーションクラスのオブジェクト(NSApplication、NSWindow、NSView)はレスポンダです。これらはNSResponderを直接的または間接的に継承するクラスのインスタンスです(Figure 6-19を参照)。この抽象クラスは、イベントに応答できるオブジェクトについて、それらのインターフェイスおよび期待される動作を定義します。NSResponderのサブクラスでは、この動作の全部または一部を実装します。
注: これ以外に、NSResponderを直接継承するApplication Kitのクラスとして、NSWindowControllerとNSDrawerの2つがあります。NSWindowControllerはCocoaドキュメントアーキテクチャの一部ですが(“「Cocoaのその他のアーキテクチャ」”を参照)、これらのクラスはどちらもCocoaのコアアプリケーションアーキテクチャの中心ではありません。
以下に示すように、NSResponderクラスは、コアアプリケーションアーキテクチャの3つの主要なパターンまたはメカニズムに対応するインターフェイスを定義します。
イベントメッセージ(つまり、マウスクリックやキー押下などのユーザイベントを発信源とするメッセージ)を処理するためのメソッド群を宣言しています。
標準のキーバインディング(たとえば、テキスト内の挿入ポイントを移動するものなど)に結び付けられたアクションメッセージを処理するための多数のメソッドを宣言しています。アクションメッセージはターゲットオブジェクトにディスパッチされます。ターゲットが指定されていない場合は、アプリケーションによって適切なレスポンダが検索されます。
アプリケーションの中でレスポンダを指定および管理するためのメソッド群を定義しています。これらのレスポンダによってレスポンダチェーンと呼ばれる構造が形成されます。レスポンダチェーンとは、イベントを処理することのできるオブジェクトが見つかるまでイベントメッセージやアクションメッセージが受け渡しされるレスポンダの並びのことです。
レスポンダチェーンはApplication Kitのイベント処理アーキテクチャにおける中心的なメカニズムです。レスポンダチェーンは一連のレスポンダオブジェクトが連結されたもので、このチェーンに沿ってイベントメッセージやアクションメッセージが受け渡しされます。Figure 6-20に示すように、あるレスポンダオブジェクトがイベントまたはアクションを処理できない場合(つまり、メッセージに応答できなかったり、イベントを認識できない場合)、そのレスポンダオブジェクトから、チェーン内の次のレスポンダにメッセージが再送信されます。メッセージは、処理されるまで、チェーンの上位(のオブジェクト)に向かって順に渡されます(処理されなかったメッセージは破棄されます)。
Application Kitは、アプリケーション内のオブジェクトを構築する際、ウインドウごとにレスポンダチェーンを準備します。レスポンダチェーン内で不可欠なオブジェクトは、NSWindowオブジェクトとそのビュー階層です。階層内で下位にあるビューには、上位にあるオブジェクトよりも先に、イベントメッセージおよびアクションメッセージを処理する機会が与えられます。NSWindowは最初のレスポンダへの参照を維持しています。First Responderは、通常はウインドウ内で現在選択されているビューであり、メッセージに最初に応答する機会がそのビューに与えられます。イベントメッセージの場合、レスポンダチェーンの終わりは、通常はイベントが発生したウインドウを管理しているNSWindowオブジェクトです。ただし、別のレスポンダを次のレスポンダとしてNSWindowオブジェクトの後に追加することができます。
アクションメッセージの場合には、レスポンダチェーンがさらに複雑になります。アクションメッセージのレスポンダのチェーンは次の2つの要素によって決まります。
アプリケーションに現在、メインウインドウとキーウインドウの両方がある場合は、両方のウインドウのレスポンダチェーンが関与し、キーウインドウのレスポンダチェーンから先に、アクションを処理する機会が与えられます。各ウインドウのチェーンの最後には、NSWindowのデリゲートに応答の機会が与えられます。結合したレスポンダチェーンの最後には、NSAppとそのデリゲートがあります。
アプリケーションの種類(単純なアプリケーション、ドキュメントベースのアプリケーション、ウインドウコントローラを使用するアプリケーションなど)に応じて、チェーン内のレスポンダオブジェクトの種類と位置が決まります。
NSResponderクラスでは、エラーの表示、復旧、メッセージのディスパッチ、アプリケーションヘルプその他の機能を備えたメソッドも宣言されています。
| < Previous PageNext Page > |
Last updated: 2006-05-23
|
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 |