我有两个对象,都是视图控制器。第一个对象(我称其为 viewController1)声明了一个协议。第二个对象(不出所料,我会将其命名为viewController2)符合此协议。
XCode 给出了一个构建错误:'Cannot find protocol declaration for viewController1'
我看过一些关于这个问题的提问,我确定这与循环错误有关,但在我的情况下,我只是看不到它……
以下是代码:
viewController1.h
XCode 给出了一个构建错误:'Cannot find protocol declaration for viewController1'
我看过一些关于这个问题的提问,我确定这与循环错误有关,但在我的情况下,我只是看不到它……
以下是代码:
viewController1.h
@protocol viewController1Delegate;
#import "viewController2.h"
@interface viewController1 {
}
@end
@protocol viewController1Delegate <NSObject>
// Some methods
@end
viewController2.h
#import "viewController1.h"
@interface viewController2 <viewController1Delegate> {
}
@end
一开始,我把import语句放在viewController1中protocol声明之前。这完全阻止了项目的构建。在Stack Overflow上搜索后,我意识到了问题所在,并交换了两个行的位置。现在我收到一个警告(而不是一个错误)。该项目构建得很好,实际上运行得非常完美。但我仍然觉得会有一些问题,才会收到警告。
据我所见,当编译器到达viewController1.h时,它首先看到的是协议的声明。然后导入viewController.h文件并查看是否实现了此协议。
如果以相反的顺序编译它们,它将首先查看viewController2.h,然后第一件事是导入viewController1.h,其中第一行是协议声明。
我有什么遗漏吗?
@class viewController2;
指令可以实现这个。在viewController1.m
中导入头文件。 - Costique