【发布时间】:2009-05-14 15:02:33
【问题描述】:
我是 Objective-c 的新手,想知道导入一些我在课堂上使用的外部头文件的最佳做法。
我应该将#import "classB.h" 存储在我自己的类 .h 文件还是 .m 文件中?
有什么区别?
谢谢!
【问题讨论】:
标签: objective-c
我是 Objective-c 的新手,想知道导入一些我在课堂上使用的外部头文件的最佳做法。
我应该将#import "classB.h" 存储在我自己的类 .h 文件还是 .m 文件中?
有什么区别?
谢谢!
【问题讨论】:
标签: objective-c
正确的做法是在标题中放置前向类声明 (@class classB;),在 .m 中放置 #import "classB.h
像@class classB; 这样的前向类声明让编译器知道它应该稍后期待该类,并且此时它不应该抱怨它。
【讨论】:
为避免循环引用,仅在另一个类的头文件中#import 一个头文件(如果它是从该类继承的)。否则,如果你需要在头文件中使用@class ClassName声明类类型,并在实现文件中#import它。
【讨论】:
对于编译器来说,这真的无关紧要。您可以在 .h 中抛出前向声明,然后等待 #import 直到您的 .m 文件。有关更多信息,请参阅 SO 上的 this 帖子。
从干净代码的角度来看,有些人可能会争辩说,将导入放在您的实现文件中可以使细节更接近需要它们的位置(也请参见上面的链接;那里的人参考了这个想法)。
【讨论】:
建议您在头文件中导入其他头文件。这样您就可以在头文件和实现文件中使用该类(因为实现文件 (.m) 会导入其关联的头文件)。
如果你想知道什么时候导入文件,什么时候使用前向类声明,你可以去here。 ;-)
【讨论】: