|
|
Log In | Not a Member? |
Contact ADC |
| < Previous PageNext Page > |
多くのアプリケーションでは、ユーザがドキュメントを作成および編集できるようになっています。ドキュメントとは、同一のユーザインターフェイスを持つウインドウに個別に表示されたデータの独自の集合体です。ワードプロセッサ、写真画像エディタ、Webブラウザなどは、ドキュメントベースアプリケーションの例です。これらのアプリケーションには似通った機能があります。これらのアプリケーションでは、ユーザが新規ドキュメントを作成し、ファイルに保存し、後で開くことができます。また、ドキュメントベースアプリケーションは、メニュー項目の有効化、各ドキュメントの編集ステータスの監視、ドキュメントウインドウの管理、アプリケーション全体にかかわるイベント(たとえば、“終了”)への適切な対応などを行います。多くの場合、ドキュメントベースアプリケーションはドキュメントデータを内部的に異なる表現で扱うことができます。
Cocoaは、こうした機能をそなえたドキュメントベースアプリケーションの実装に必要な作業を軽減するアーキテクチャを、開発者に提供します。このアーキテクチャを構成する基本的なコンポーネントとして、Application Kitの3つのクラスであるNSDocument、NSDocumentController、およびNSWindowControllerがあります。ドキュメントベースのCocoaアプリケーションでは、これら3つのクラスのオブジェクトがそれぞれ異なる役割を担い、所有権と管理に基づいて一連の階層的な相互関係があります(Figure 7-1を参照)。
ドキュメントアーキテクチャをベースとするCocoaアプリケーションには、NSDocumentControllerオブジェクトが1つあります。このオブジェクトは1つ以上のNSDocumentオブジェクトを所有します。各NSDocumentオブジェクトはさらに、1つ以上のNSWindowControllerオブジェクトを作成し管理します。そして、それぞれのNSWindowControllerオブジェクトはドキュメントウインドウに関連付けられています(1つのドキュメントが複数のウインドウを持つことができます)。NSWindowControllerオブジェクトは、ドキュメントの表示を管理します。
Cocoaドキュメントアーキテクチャの3種類のオブジェクトには、MVCにおけるそれぞれの役割に応じた特定の責任があります。
NSDocumentControllerオブジェクトは、アプリケーションのドキュメントを管理します。ドキュメントを新規に作成し、編集されたドキュメントを保存し、保存されたドキュメントを開くまでの作業について、それらの開始と調整を行います。MVCの役割のうち、アプリケーション全体の調整コントローラとしての役割を担います。ドキュメントベースアプリケーションでは、NSDocumentControllerオブジェクトは自動的に提供されます。通常はこのオブジェクトをサブクラス化する必要はありません。
NSDocumentControllerは、アプリケーションの情報プロパティリスト(Info.plist)に指定されているドキュメントタイプメタデータから、ドキュメントの管理に必要な情報を取得します。このメタデータは、アプリケーションによる読み取りおよび書き込みが可能な各ドキュメントについて、その拡張子、HFSタイプコード、MIMEタイプ、アイコン、およびNSDocumentサブクラス(該当する場合)をアプリケーションに伝えます。
NSDocumentオブジェクトは、ドキュメントのモデルオブジェクトを管理します。MVCの言葉で言えば、NSDocumentオブジェクトはモデルコントローラであり、管理の対象がモデルレイヤに移行したコントローラです。NSDocumentは抽象クラスであり、そのカスタムサブクラスを作成して、ドキュメントデータに関する情報をモデルオブジェクトにカプセル化する必要があります。このサブクラスのインスタンスは、ファイルからデータを読み取り、そのデータからドキュメントのモデルオブジェクトを再作成できる必要があります。また、ドキュメントの現在のモデルオブジェクトのコレクションをファイルに保存できる必要もあります。場合によっては、インスタンスでドキュメントデータの内部表現を複数維持する必要が生じることもあります。また、NSDocumentオブジェクトも1つ以上のNSWindowControllerオブジェクトを所有し管理します。
NSWindowControllerオブジェクトは、ウインドウ内のドキュメントの表示を管理します。MVCの言葉で言えば、NSWindowControllerドキュメントはビューコントローラです。このオブジェクトは、ドキュメントのデータを表示するウインドウの管理に関与します。簡単なアプリケーションでは、NSWindowControllerのカスタムサブクラスを作成しなくても済む場合があります。デフォルトのインスタンスで基本的なウインドウ管理作業を処理しつつ、NSDocumentオブジェクトでビューレイヤの情報を組み込むことができます。しかし、ほとんどの場合、ドキュメントのビューオブジェクトの情報をNSWindowControllerサブクラスに追加する必要があります。通常、このサブクラスのインスタンスはドキュメントnibファイルの“File's Owner”です。マルチウインドウのドキュメントの場合は、ウインドウごとに異なるNSWindowControllerオブジェクトを1つずつ持たせることができます。
Xcodeには、ドキュメントアーキテクチャをベースとしたCocoaアプリケーション用のプロジェクトテンプレートが用意されています。このテンプレートを使用してプロジェクトを作成すると、オーバーライドする必要のあるメソッドのスタブ実装を含んだNSDocumentサブクラスが(MyDocumentという名前で)得られます。また、“File's Owner”がMyDocumentとして設定されているドキュメントnibファイルも得られます。
| < 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 |