2009-06-05 8 views

答えて

3

私はどこかで定義され、コンパイルすると、定義されます。 Objective-CにはJavaのような "ClassName.java"のような規則はありません。

これは、プライベートメソッド/プロパティのようなもののためにcategoriesのようなことをしたいときに非常に役に立ちます。

-1

In Objective-Cは同じです。プロトコルはクラス間で共有されるメソッドのリストなので、プロトコルは、対応する実装のないメソッドのリストのみです。それらは他の誰かによって実装されることを意図しています。

3

プロトコルは通常自分の経験では自分の.hファイルで定義されています。しかし、それらはshared.hファイルで定義することができます。プロトコルのユーザーがプロトコルを共有ファイル形式で採用できるようにするのは難しいですし、さらにAPIを乱雑にしてしまいます。プロトコルがそれ自身の.hファイルであれば、ドキュメントと使用法はおそらくもっと簡単でしょう。

また、他のクラス宣言を持つ.hファイルではなく、プロトコル.hファイルをインクルードする必要がある場合は、ポリモフィックな実装のようにプロトコルを使用するとオーバーヘッドが少なくなります。私いくつかあるだろう、このアイデアの正確なコスト/省でわからないんだけど、私が読んだ(小さいバイナリ?)

よろしく、 フランク

19

私は、プロトコルの配置が依存だと思いますどのようにそれを使用している。多くの場合、プロトコルは別のクラスのデリゲートまたはデータソースの機能を定義するために使用されます。そうだとすれば、プロトコル定義を他のクラスの先頭に置くことは安全だと思います。

共有ベースクラスの代わりにプロトコルを定義する場合は、おそらく別のファイルに配置する必要があります。例えば、私は "Operation"プロトコルを実装するいくつかの異なるクラスを持っています。私の他の関数のいくつかは、プロトコルを実装するオブジェクトを受け取ることを期待しており、実際のクラスについてあまり気にしません。その場合、独自のヘッダーファイルにプロトコル定義を入れて、独自のヘッダーファイルに含めることができます。

ベニーですが、技術的にはと定義されています。どこに置いてもと定義されています(使用前のどこかに含まれている限り)。

+0

私はクラスの数で書き直されたプロトコルを見つけたコードレビューに取り組んでいました。プロトコルを定義するための別個のファイルを作成しましたが、そのファイルをインポートしませんでした。あなたの答え "(それが使用される前のどこかに含まれている限り)。ありがとう+ – Alok

0

これはObjective-Cのスタイルの問題です。私は本当に "適切な"方法は、プロトコルのための別々の.hファイルを作成することであり、私がやることだけである他のもの(例えばNSCodingのようなもの)に属していないプロトコルを作っていたとします。一方、私はプロトコル(または非公式プロトコル、NSObjectのカテゴリを使用して)を作成するとき、NSTableViewのデータソースの非公式プロトコルのような別のクラスに結びついています。このような状況では、簡単にするために宣言をそのクラスのヘッダーファイルに入れています。

0

デリゲート、プロトコル、セレクタについては、AppleのCommunicating with Objectsも参照してください。 Mac OS Xの下に掲載されていますが、ほとんどの場合(すべてではないにしても)、iOSにも当てはまります。

関連する問題