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

< Previous PageNext Page >

Cocoaフレームワークの使用

ライブラリ関数を使用するプログラムに関数が課す制限事項はわずかです。ライブラリ関数は必要なときにいつでも呼び出せます。一方、オブジェクト指向のライブラリまたはフレームワークにあるメソッドは、クラス定義に結び付けられており、それらの定義にアクセスするオブジェクトを作成または取得しない限り、呼び出せません。そのうえ、ほとんどのプログラムでは、オブジェクトがプログラムネットワークの中で機能できるように、オブジェクトを別の少なくとも1つのオブジェクトに接続する必要があります。クラスではプログラムコンポーネントを定義しますが、そのサービスにアクセスするためには、アプリケーションの構造にコンポーネントを組み込む必要があります。

とは言うものの、フレームワークのクラスによっては、ライブラリ関数のセットとよく似た動作をするインスタンスを生成するものもあります。単純に、インスタンスを作成して初期化し、そのインスタンスにメッセージを送信して作業を達成するか、インスタンスをアプリケーションの待機スロットに挿入します。たとえば、NSFileManagerクラスを使用して、ファイルの移動、コピー、削除など各種のファイルシステム操作を実行できます。警告のダイアログを表示する必要があれば、NSAlertクラスのインスタンスを作成し、そのインスタンスに適切なメッセージを送ります。

しかし、一般に、Cocoaのような環境は、サービスを提供する個々のクラスを単に寄せ集めただけのものではありません。これらの環境は、オブジェクト指向フレームワーク、つまり問題領域を構造化し、問題に対する統合された解決策を提示するクラスの集まりで構成されます。必要に応じて利用できる個別のサービスを提供する関数ライブラリとは異なり、フレームワークはプログラムの構造全体(モデル)を明確化し、実装します。そして、プログラムのコードをそのモデルに合わせる必要があります。このようなプログラムモデルは汎用性があるため、個々のプログラムの要件に合わせてカスタマイズできます。ライブラリ関数を組み込むプログラムをデザインするのではなく、フレームワークが提供するデザインに自分のコードを組み込むのです。

フレームワークを使用するには、フレームワークが定義するプログラムモデルを受け入れ、フレームワークのクラスを必要なだけいくつでも利用およびカスタマイズして、自分のプログラムをそのモデルに合わせていく必要があります。クラスは相互に依存しており、単体ではなくグループとして提供されます。始めのうちは、自分のコードをフレームワークのプログラムモデルに合わせなければならないことに、制限を感じるかもしれません。しかし、実際にはまったく正反対です。フレームワークは、その汎用的な動作を変更または拡張できる数多くの手段を備えています。Cocoaプログラムはすべて同じプログラムモデルがベースとなっているので、すべてのCocoaプログラムが同一の基本的な方法で動作することを受け入れさえすればよいのです。

Cocoaフレームワークのクラスは、次の4つの方法を通じてサービスを提供します。

クラスによっては、ここに示した一般的なサービスを複数提供するものもあります。たとえば、既製のNSWindowオブジェクトをInterface Builderパレットからドラッグし、若干の初期化処理を加えるだけで使用できます。つまり、NSWindowクラスは、既製のインスタンスを提供します。しかし、NSWindowオブジェクトはそのデリゲートへのメッセージの送信も行い、各種の通知もポストします。また、角の丸いウインドウが必要であればNSWindowをサブクラス化することも可能です。

フレームワークが提供する構造にプログラム固有のコードを組み込む際に、最も多くの選択肢を提供するのは、Cocoaクラスの最後の2つの部類、つまり、汎用的なオブジェクトと、デリゲータまたはノティファイアです。“「Cocoaクラスからの継承」”では、フレームワーククラス(特に汎用クラス)のサブクラスを作成する方法について、その概要を説明します。プログラムネットワーク内のオブジェクトどうしでやり取りをするための、委任、通知、その他のメカニズムの詳細については、“「オブジェクトとの通信」”を参照してください。



< 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