Objective C中的循环依赖解决方法

时间:2011-07-22 20:19:54

标签: objective-c containers circular-dependency

我有一个像这样定义的协议:

@protocol Container

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

@end

以及具有以下声明的类:

@interface Stuff : NSObject {

}

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

@end

我在putStuff声明中遇到错误 - “预期类型”。但是,如果我将方法的参数更改为NSObject,则编译正常 - 所以,我认为Objective C不允许循环依赖。

在我正在工作的实际课程中,我想实现两个 - 但是,如何在没有它的情况下实现这样的逻辑?

2 个答案:

答案 0 :(得分:8)

当编译器评估您的Container协议时,它不知道您的Stuff类。您可以通过前向声明让编译器了解您的Stuff课程:

@class Stuff;

@protocol Container

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

@end

答案 1 :(得分:0)

您应该在这里使用id

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