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

< 前ページ次ページ >

プロトコル内のプロトコル

クラスでプロトコルを採用するときに使うのと同じ構文を使用して、プロトコルの中に他のプロトコルを組み込むことができます。

@protocol ProtocolName < protocol list >

不等号括弧内に記述されたすべてのプロトコルが、ProtocolNameプロトコルの一部と見なされます。たとえば、次のようにして、PagingプロトコルにFormattingプロトコルを組み込みます。

@protocol Paging < Formatting >

この場合、Pagingプロトコルに準拠するオブジェクトは、Formattingにも準拠します。次の型宣言を参照してください。

id <Paging> someObject;

また、次のconformsToProtocol:メッセージも参照してください。

if ( [anotherObject conformsToProtocol:@protocol(Paging)] )
    ...

これらはどちらも、Pagingプロトコルを記述するだけで、Formattingへの準拠もテストされます。

クラスでプロトコルを採用するときは、前述したように、プロトコルに宣言されている必須メソッドを実装する必要があります。さらに、採用したプロトコルに組み込まれているすべてのプロトコルにも準拠しなければなりません。組み込まれているプロトコルにさらに他のプロトコルが組み込まれている場合、クラスはそれらにも準拠する必要があります。クラスが組み込まれたプロトコルに準拠するには、次のどちらかの方法があります。

たとえば、PagerクラスでPagingプロトコルを採用しているとします。PagerがNSObjectのサブクラスの場合、次のようになります。

@interface Pager :NSObject < Paging >

組み込まれたFormattingプロトコルで宣言されているメソッドを含め、すべてのPagingメソッドを実装する必要があります。これは、Pagingに加えてFormattingプロトコルも採用します。

これに対して、PagerがFormatter(Formattingプロトコルを独自に採用しているクラス)のサブクラスの場合、次のようになります。

@interface Pager :Formatter < Paging >

Pagingプロトコル自体に宣言されているすべてのメソッドを実装する必要がありますが、Formattingに宣言されているメソッドは実装の必要がありません。PagerがFormatterからFormattingプロトコルへの準拠を継承するからです。

クラスは、プロトコルを形式的に採用しなくても、単にプロトコルに宣言されているメソッドを実装するだけでプロトコルに準拠できることに注意してください。



< 前ページ次ページ >


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