2

Appleのドキュメント クラス名とは異なり、プロトコル名にはグローバルな可視性がありません。それらは独自の名前空間に住んでいます。

ドキュメントでは詳しく説明されていないため、これはどういう意味ですか。私は試してみましたが、同じ名前の 2 つのプロトコルを作成しましたが、それらは異なるファイルにあり、コンパイラは重複プロトコルの警告を表示します。import両方のプロトコルが 1 つのファイルにある 場合、最初のプロトコルimportは他のプロトコルの減速を隠します。したがって、最初にインポートされたプロトコルメソッドが機能します。その他は警告を与える

では、この行は何を意味するのでしょうか。私はそれを正しく理解することができません。

4

2 に答える 2

2

他のプログラミング言語では、異なるディレクトリまたはパッケージで同じクラス名を持つことができます。

Objective C では、クラス名はグローバルであるため、名前空間の概念はありません。名前は一意である必要があります。Employee クラスを 2 つにすることはできません。

ただし、プロトコルについては、同じプロトコルを異なるファイルで定義することができ、インポートするファイルに基づいて、そのプロトコルを可視化できます。

そのヘッダー ファイルをインポートしない場合、そのプロトコルについてはわかりません。-これはおそらく、「プロトコルにはグローバルな可視性がありません」と記載されているドキュメントで意味されていることです

また同時に、同じプロトコルの 2 つの定義がある場合、最初の定義のみが考慮されます。実際、コンパイラはこの事実に対して明確な警告を表示します。

于 2012-12-09T16:02:41.347 に答える
1

同じ名前のプロトコルを複数持つことはできますが、同じクラスで使用することはできません。前者は後者を隠します。

于 2012-12-09T09:09:16.513 に答える