找不到协议声明

Ben*_*son 26 iphone delegates protocols objective-c ios

我有两个对象,都是视图控制器.第一个(我称之为viewController1)声明了一个协议.第二个(不出所料我将命名viewController2)符合这个协议.

XCode给我一个构建错误:'找不到viewController1的协议声明'

我已经看到关于这个主题的各种问题,我确信这是一个循环错误,但我只是在我的情况下看不到它...

代码如下..

viewController1.h

@protocol viewController1Delegate;

#import "viewController2.h"

@interface viewController1 {

}

@end

@protocol viewController1Delegate <NSObject>

// Some methods

@end
Run Code Online (Sandbox Code Playgroud)

viewController2.h

#import "viewController1.h"

@interface viewController2 <viewController1Delegate> {

}

@end
Run Code Online (Sandbox Code Playgroud)

最初,我在viewController1中的导入行高于协议声明的导入行.这阻碍了项目的建设.在SO上搜索之后,我意识到了这个问题,然后切换了两条线.我现在收到警告(而不是错误).该项目建设良好,实际上运行完美.但我仍然认为发出警告肯定有问题.

现在,据我所知,当编译器到达viewController1.h时,它首先看到的是协议的声明.然后它导入viewController.h文件并看到它实现了这个协议.

如果它反过来编译它们,它将首先查看viewController2.h,它首先要做的是导入viewController1.h,其第一行是协议声明.

我错过了什么吗?

Cos*_*que 68

从以下行中删除此行viewController1.h:

#import "viewController2.h"
Run Code Online (Sandbox Code Playgroud)

问题是viewController2在协议声明之前对接口进行了预处理.

该文件的一般结构应如下所示:

@protocol viewController1Delegate;
@class viewController2;

@interface viewController1
@end

@protocol viewController1Delegate <NSObject>
@end
Run Code Online (Sandbox Code Playgroud)

  • 有@class viewController2;`指令.在`viewController1.m`中导入头文件. (2认同)