|
|
Log In | Not a Member? |
Contact ADC |
| < 前ページ次ページ > |
プロトコルを使って、匿名オブジェクト、つまり未知のクラスのオブジェクトのメソッドを宣言することができます。匿名オブジェクトは、サービスを示したり、限られた数の関数から成るセットを処理することができます。特にその種類のオブジェクトが1つだけ必要な場合に使用します(アプリケーションのアーキテクチャを定義する際に基本的な役割を果たすオブジェクトや、使用する前に初期化しなければならないオブジェクトは、匿名オブジェクトには適していません)。
もちろん、当該オブジェクトの開発者にとっては匿名ではありませんが、開発者がオブジェクトを他の誰かに提供するときは匿名です。たとえば、次のような状況があるとします。
他から使用されるフレームワークや一組のオブジェクトを提供する開発者は、クラス名やインターフェイスファイルによって識別されないオブジェクトを含めることができます。名前とクラスインターフェイスがないので、ユーザにはクラスのインスタンスを作成する方法がありません。代わりに、供給側は事前に作成しておいたインスタンスを提供する必要があります。通常、別のクラスのメソッドは、使用可能なオブジェクトを返します。
id formatter = [receiver formattingService]; |
メソッドによって返されたオブジェクトはクラス識別情報を持たないオブジェクト、少なくとも供給側が積極的に公開するような識別情報を持たないオブジェクトです。しかし、多少なりとも役に立つように、供給側は対応できるメッセージの少なくとも一部を積極的に提示する必要があります。これを行うには、プロトコルで宣言したメソッドのリストとオブジェクトを関連付けます。
Objective-C のメッセージは、リモートオブジェクト(他のアプリケーションのオブジェクト)に送信することができます((詳細については、リモートメッセージングを参照してください)。
各アプリケーションは、独自の構造、クラス、および内部ロジックを持ちます。しかし、アプリケーションと通信するためにその動作や構成要素を知っている必要はありません。部外者として知っている必要があるのは、送信可能なメッセージ(プロトコル)とメッセージの送信先(レシーバ)だけです。
リモートメッセージの潜在的レシーバとしてオブジェクトの1つを公開するアプリケーションは、オブジェクトが受信したメッセージに対応するために使用するメソッドを宣言するプロトコルも公開しなければなりません。オブジェクトに関して、他には何も公開する必要がありません。送信側アプリケーションは、オブジェクトのクラスを知っていたり、自身の設計の中でそのクラスを使用する必要はありません。必要なのはプロトコルだけです。
プロトコルにより、匿名オブジェクトが可能になります。プロトコルがなければ、クラスを特定せずに、オブジェクトのインターフェイスを宣言する方法はありません。
注: 匿名オブジェクトの供給側はそのクラスを公開しませんが、オブジェクト自体は実行時に明らかになります。classメッセージは匿名オブジェクトのクラスを返します。しかし、通常はこの付加的な情報を知る意味はほとんどなく、プロトコルの情報だけで十分です。
| < 前ページ次ページ > |
Last updated: 2007-10-31
|
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 |