2011-06-28 7 views
2

私はObjective Cを初めて使っています。私はJavaのインターフェイスと同じようにプロトコルを使用しようとしていますが、それがどのように、あるいはそれが正しいツールであるかわかりません。私はProtocol.hでプロトコルを定義している:Objective-Cでプロトコルをクラス変数として使用できますか?

@protocol SomeProtocol 
- (void)someMethod; 
@end 

は今、別のクラスでは、私が「SomeProtocol objWithSomeMethodは」私にエラーを与えるもちろん

#import "Protocol.h" 
@interface OtherClass:NSObject { 
    SomeProtocol objWithSomeMethod; 
} 
@end 

のsomeMethodた変数を必要としています。したがって、型に関係なく、このプロトコルに準拠したオブジェクトを宣言する方法はありますか?

答えて

4

はい、角かっこを使用します。あなたはこのようにそれらを分離するためにカンマを使用し、あなたはそれが複数のプロトコルに準拠するようにしたい場合は

id<SomeProtocol> objWithSomeMethod; 

:あなたはこのようなプロトコルに準拠するようにインスタンス変数を宣言することができます

id<SomeProtocol, SomeOtherProtocol> objWithSomeMethod; 

あなたは同じ方法で変数やパラメータを宣言することもできます。

4

角カッコは、オブジェクトをプロトコルの実装として修飾します。

@interface MyProtocolClass : NSObject <SomeProtocol> { 
    // ... 
} 
@end 
-1

あなたは、その後、彼のタイプを使用してインスタンス変数を宣言する必要があります:あなたの例では、あなたはクラスがインターフェイスを実装することを宣言したい場合は、基本的に、同様の表記を使用

#import "Protocol.h" 
@interface OtherClass : NSObject { 
    id<SomeProtocol> objWithSomeMethod; 
} 
@end 

を書きます内部のプロトコルのリスト<>そして最後に変数名。あなたの場合、それは次のようになります:

#import "Protocol.h" 
@interface OtherClass:NSObject { 
    id <SomeProtocol> objWithSomeMethod; 
} 
@end 
関連する問題