2011-07-22 16 views
2

私はこのように定義されたプロトコルがあります。次の宣言とループ依存性の回避策

@protocol Container 

- (BOOL)putStuff: (Stuff *) theStuff; 

@end 

とクラス:

@interface Stuff : NSObject { 

} 

@property(readwrite,nonatomic,retain) NSObject <Container> * containerHoldingMe; 

@end 

と私はputStuff宣言にエラーが発生します - 「期待をある種の "。しかし、メソッドの引数をNSObjectに変更すると、コンパイルが正常に行われるため、Objective Cはループ依存を許さないと思います。

私が働いている実際のクラスでは2つ実装したいのですが、どうすればそのようなロジックを実装することができますか?

答えて

8

コンパイラはContainerプロトコルを評価する時点で、それはあなたのStuffクラスについて知っていません。あなたはコンパイラが前方宣言であなたのStuffクラスを知らせることができます。これは、働いていた

@class Stuff; 

@protocol Container 

- (BOOL)putStuff: (Stuff *) theStuff; 

@end 
+0

、感謝を。 –

+0

@golergkaあなたは大歓迎です:) – albertamg

0

ここではidを使用してください。

@property (readwrite, nonatomic, retain) id<Container> containerHoldingMe;