好的,这样看起来很公平。我已经将AppDelegate导入到我要导入的文件中,所以AppDelegate正在从两个不同的地方导入。所以我删除AppDelegate行,一切都很好。
但是当我需要导入两个需要导入AppDelegate的类时会发生什么?
我有一个非常具体的问题,我正试图围着我,我知道这是由与这个有关的事情造成的,但我不知道什么。所以我希望如果我知道我应该如何处理这种导入,并排序一切,并希望这解决了我的问题。所以要更具体地说:
我有ClassA.h,ClassB.h和ClassC.h。所有的都有#import“AppDelegate.h”。当我需要在ClassA中使用#import“ClassB.h”时,我从ClassA中删除#import“AppDelegate.h”行。一切顺利但是如果我还需要将“ClassC.h”导入ClassA,但是ClassB和ClassC需要#import“AppDelegate.h”,会怎么样?
编辑:
我在一个干净的项目中尝试了上面描述的确切场景,并且它建立得很好,所以还有其他的东西在玩。但是我可以肯定地说,当这个问题出现在这个项目之前,它是AppDelegate的一个重复的接口定义,当我删除了#import“AppDelegate.h”行时,错误消失了,我还是通过其他导入的文件访问AppDelegate.h方法和枚举。
解决方法
>您需要扩展在另一个标题中声明的类。
>您需要声明符合另一个声明的协议
头。
>您需要引用在公共方法和/或属性中的另一个标头中定义的非类,非协议类型。要引用协议和类,forward使用@class或@protocol声明它们,如@class ClassFromOtherHeader;
每个其他#import应该在你的实现。我的建议是根据这些规则,将所有的#import语句从头文件移动到实现文件中。从你认为的问题的根源开始,向外移动。这将解决您的问题,并为您提供更清晰的代码和更快的构建时间的副作用。