2012-04-02 11 views
0

私は現在、本からobjective-cを学んでいます。 1つの例では、特定のヘッダファイルのクラスインタフェースの前に、@classとそれに続く2つのプロトコル宣言が読み込まれます。@classの下にプロトコル宣言がありますか?

@class Thing; 

@protocol Foo 
-(void)foo:(Thing *); 
@end; 

@protocol Bar 
-(void)bar:(Thing *); 
@end; 

@interface Thing : NSObject <Foo, Bar> 
... 

私は@classが循環参照を防ぐために使用された、しかし私はその下に何が起こっているか理解していないことを理解しています。なぜプロトコルは@interfaceブロックではなく、そこで宣言されていますか?

答えて

0

通常宣言されているのかフォワード宣言されていますか?

前者の場合、これはカスタムプロトコルの宣言に過ぎません。これはおそらく下で定義されたクラスによって使用されます(たとえば、@interface MyClass : Object<MyProtocol>)。それ以外の場合は、クラス前方宣言の同じ特定の理由

+0

私は今や何が起こっているのか理解していると思います。私の混乱は、 '@ class'ステートメントと2つのプロトコル宣言が手を携えてお互いに関係していると思ったことです。その名前のクラスが存在していることをコンパイラに通知するだけです。プロトコル宣言で参照が使用されていたからです。助けてくれてありがとう! – Fitzy

+0

はい、それは確かに前方宣言です:) – Jack

関連する問題