我有一个像这样定义的协议:
@protocol Container
- (BOOL)putStuff: (Stuff *) theStuff;
@end
以及具有以下声明的类:
@interface Stuff : NSObject {
}
@property(readwrite,nonatomic,retain) NSObject <Container> * containerHoldingMe;
@end
我在putStuff声明中遇到错误 - “预期类型”。但是,如果我将方法的参数更改为NSObject,则编译正常 - 所以,我认为Objective C不允许循环依赖。
在我正在工作的实际课程中,我想实现两个 - 但是,如何在没有它的情况下实现这样的逻辑?
答案 0 :(得分:8)
当编译器评估您的Container
协议时,它不知道您的Stuff
类。您可以通过前向声明让编译器了解您的Stuff
课程:
@class Stuff;
@protocol Container
- (BOOL)putStuff: (Stuff *) theStuff;
@end
答案 1 :(得分:0)
您应该在这里使用id
。
@property (readwrite, nonatomic, retain) id<Container> containerHoldingMe;