协议错误。找不到协议声明

时间:2012-03-27 08:18:16

标签: iphone objective-c protocols

我们有错误:无法找到'ClassWhichUseMainScene'的协议声明[3]

我们创建了文件: Protocol.h

#import "ScoreSystem.h"
#import "OtherSystem"
#import "OtherSystem2"

@class ScoreSystem;

@protocol SceneDelegate <NSObject>
@property (nonatomic, readonly,retain) ScoreSystem* score;
@property (nonatomic, readonly,retain) OtherSystem* system;
@property (nonatomic, readonly,retain) OtherSystem2* system2;

@end

并在ScoreSystem.h中使用

#import "Protocol.h"
#import "OtherSystem"
#import "OtherSystem2"

@interface ScoreSystem: NSObject <SceneDelegate> 
{
OtherSystem* system;
OtherSystem2* system2;
}

在ScoreSystem中,我们只想使用OtherSystem和OtherSystem2对象。在OtherSystem中使用ScoreSystem和OtherSystem2等。 我们希望为所有系统创建通用协议。

2 个答案:

答案 0 :(得分:4)

两个头文件之间存在循环依赖关系(每个头文件都导入另一个)。不要在Protocol.h中导入ScoreSystem.h@class前向声明就足够了。您的其他两个进口也是如此。

作为一般规则,我避免在其他类头文件中包含类头文件 - 我只是在任何地方使用@class并在实现文件中导入头文件。

答案 1 :(得分:0)

使用简单的导入语句解决了Mine问题

#import "ProtocolContainingFile.h"