Objective-C:在.h或.m中导入头文件?

27

我刚接触 Objective-C,想知道在我的类中导入一些外部头文件的最佳实践。

应该将 #import "classB.h" 储存在自己类的 .h 文件中还是 .m 文件中?

两者有何区别?

谢谢!


可能是Do you put #import s in .h or .m files?的重复问题。 - Felipe Andrade
4个回答

37

在编写代码时,应该将前向类声明(@class classB;)放在头文件中,在 .m 文件中使用 #import "classB.h"

前向类声明,如@class classB;,让编译器知道它会在稍后出现,并且此时不应该抱怨它。


我认为你的第一句话中的意思是“在.m文件中”。 - Paul Tomblin

11
为了避免循环引用,在另一个类的头文件中,只有继承该类时才可以 #import 一个头文件。否则,如果您需要在头文件中使用该类类型,请使用 @class ClassName 声明该类类型,并在实现文件中 #import 它。

7
值得一提的是,使用 #import 指令时无法获得循环引用。 - Jason Coco
@JasonCoco,所以我不需要像Marc在这里解释的那样,在头文件中担心#import吗? - user89862

4
对于编译器来说,这并不重要。你可以在.h文件中放置前向声明,并等到.m文件再进行#import 。更多信息请参考帖子。
从代码整洁的角度来看,有些人可能会认为将导入放在实现文件中会使细节更接近需要它们的地方(也可以参考上面那个链接中的思路)。

2

建议在头文件中导入其他头文件。这样,您可以在头文件和实现文件中使用类(因为实现文件(.m)导入其关联的头文件)。

如果您想知道何时导入文件以及何时使用前向类声明,您可以点击这里。 ;-)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接