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

< 前ページ次ページ >

Protocolオブジェクト

実行時にクラスがクラスオブジェクトによって表され、メソッドがセレクタコードによって表されるように、形式プロトコルは特別なデータ型、すなわちProtocolクラスのインスタンスによって表されます。プロトコルを処理するソースコード(型指定で使用する場合を除く)は、Protocolオブジェクトを参照する必要があります。

さまざまな意味で、プロトコルはクラス定義と似ています。どちらもメソッドを宣言し、実行時にオブジェクトによって表されます。つまり、クラスはクラスオブジェクトによって、プロトコルはProtocolオブジェクトよって表されます。クラスオブジェクトのように、Protocolオブジェクトはソースコードにある定義と宣言から自動的に作成され、ランタイムシステムによって使用されます。プログラムソースコードでの割り当てと初期化は行われません。

ソースコードでは、@protocol()ディレクティブを使用して Protocolオブジェクトを参照することができます。このディレクティブは、プロトコルを宣言するディレクティブと同じですが、後に丸括弧が付いています。この丸括弧にはプロトコル名を入れます。

Protocol *myXMLSupportProtocol = @protocol(MyXMLSupport);

これは、ソースコードでProtocolオブジェクトを呼び出せる唯一の方法です。クラス名と異なり、プロトコル名はオブジェクトを指定しません(@protocol()内は除く)。

コンパイラはプロトコル宣言に遭遇するたびにProtocolオブジェクトを作成しますが、それは次の場合だけです。

宣言したものの使用されていないプロトコル(後述のように型チェックの場合は除く)は、実行時にProtocolオブジェクトによって表されません。



< 前ページ次ページ >


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