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

< 前ページ次ページ >

他のクラスが実装できるインターフェイスの宣言

クラスおよびカテゴリインターフェイスでは、特定のクラスに関連付けられるメソッド、主にクラスが実装するメソッドを宣言します。これに対して、非形式および形式プロトコルは、クラスには関連付けられていないながらも、任意の(おそらく多数の)クラスによって実装される可能性のあるメソッドを宣言します。

プロトコルはメソッド宣言の単なるリストで、クラス定義とは結び付いていません。たとえば、マウスに対するユーザ操作を報告する次のメソッドは、プロトコルにまとめることができます。

- (void)mouseDown:(NSEvent *)theEvent;
- (void)mouseDragged:(NSEvent *)theEvent;
- (void)mouseUp:(NSEvent *)theEvent;

マウスイベントに応答しなければならないクラスは、このプロトコルを採用して、そのメソッドを実装することができます。

プロトコルはメソッド宣言をクラス階層への依存から解放するため、クラスとカテゴリでは使用できない方法でメソッドを使用できます。プロトコルはどこかに実装されている(またはその可能性のある)メソッドをリストしますが、メソッドを実装するクラスを知る必要がありません。知る必要があるのは、特定のクラスがプロトコルに準拠するかどうか、プロトコルに宣言されているメソッドをクラスが実装しているかどうかということです。したがって、同じクラスを継承するという類似性だけでなく、同じプロトコルに準拠するという類似性に基づいても、オブジェクトのタイプをグループ化することができます。継承階層において互いに関係のない分岐にあるクラスも、同じプロトコルに準拠するため、類似のものとして型定義することができます。

プロトコルはオブジェクト指向設計において重要な役割を果たします。特に、プロジェクトを多数の実装者が分担したり、他のプロジェクトで開発されたオブジェクトを組み込む場合に重要となります。Cocoaソフトウェアは、Objective-Cのメッセージを通じたプロセス間通信をサポートするため、プロトコルを大いに利用しています。

しかし、Objective-Cプログラムでは、プロトコルを必ず使用する必要はありません。クラス定義やメッセージ式とは異なり、プロトコルの使用は任意です。Cocoaフレームワークにも、プロトコルを使用するものと、使用しないものがあります。プロトコルを使用するかどうかは、行うべき作業によって決まります。



< 前ページ次ページ >


Last updated: 2007-10-31




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