我已经知道规则不是#import
或#include
.h
个文件中的任何内容。那真的是真的吗?
就在今天,我遇到了两个不同的场合,我必须这样做,我导入一个包含typedef enum
的头文件,因为我的方法存根使用它作为参数而另一个我在哪里导入头文件以声明委托。
这些类型情况的实际规则是什么?有时这样做是否可以 - 如果没有,我怎么能以不同的方式做到这一点?
答案 0 :(得分:2)
没有硬性规则,但有时你必须这样做。如果您继承某些东西或需要协议声明,您还需要这样做。
一般情况下,我会重申规则为"尽可能使用@class和@protocol的前向声明。"
答案 1 :(得分:1)
如果您已阅读此规则,则该规则是错误的。如果接口声明需要某些内容,您可以在标题中包含(并导入,这只是一种更安全的包含方式)。否则将其保存为实现文件。
答案 2 :(得分:0)
如果ClassA
取决于ClassB
,那么ClassA
的消费者肯定需要导入ClassB
才能使用ClassA
,我希望头部导入优先于前向声明。