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

Max*_*kov 2 containers objective-c circular-dependency

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

@protocol Container

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

@end
Run Code Online (Sandbox Code Playgroud)

以及以下声明的类:

@interface Stuff : NSObject {

}

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

@end
Run Code Online (Sandbox Code Playgroud)

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

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

alb*_*amg 8

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

@class Stuff;

@protocol Container

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

@end
Run Code Online (Sandbox Code Playgroud)