|
|
Log In | Not a Member? |
Contact ADC |
| < 前ページ次ページ > |
オブジェクトの型宣言は、形式プロトコルを含むように拡張することができます。そのため、プロトコルはコンパイラによる別のレベルの型チェックの可能性を提供します。プロトコルは特定の実装に結び付いていないので、より抽象的な型チェックになります。
型宣言では、プロトコル名はタイプ名の後の不等号括弧内に記述します。
- (id <Formatting>)formattingService; |
id <MyXMLSupport> anObject; |
静的型定義では、コンパイラがクラス階層に基づいて型をテストできるのと同様に、この構文では、コンパイラはプロトコルに準拠しているかどうかに基づいて型をテストすることができます。
たとえば、次の宣言で、Formatterが抽象クラスであるとします。
Formatter *anObject; |
上記の宣言はFormatterを継承するすべてのオブジェクトを1つの型にグループ化するため、コンパイラはその型を対象に割り当てをチェックすることができます。
次の宣言も同様です。
id <Formatting> anObject; |
上記の宣言は、Formattingプロトコルに準拠するすべてのオブジェクトをクラス階層の位置に関係なく、1つの型にグループ化します。コンパイラは、プロトコルに準拠するオブジェクトだけがこの型に割り当てられることを保証できます。
いずれの場合にも、共通の継承を共有するか、共通のメソッドセットを中心にまとめられる類似のオブジェクトが型によってグループ化されます。
2つの型を1つの宣言で一体化することができます。
Formatter <Formatting> *anObject; |
プロトコルは、クラスオブジェクトの型定義には使用できません。クラスとして静的に型定義できるのはインスタンスだけであるのと同じように、プロトコルとして静的に型定義できるのもインスタンスだけです(ただし、実行時には、クラスとインスタンスはどちらもconformsToProtocol:メッセージに応答します)。
| < 前ページ次ページ > |
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 |