头文件是否应包含在.h或.m文件中?

时间:2011-04-21 19:20:40

标签: xcode ios

如果我有四个.h / .m文件对

file1.h

file2.h

file3.h

file4.h

我在file4中使用file1.h,file2.h和file3.h功能,这些头文件是否应该包含在file4.h或file4.m中?

3 个答案:

答案 0 :(得分:3)

如果可能,请在.m文件中。您可能必须在.h文件中转发声明类,如:

@class AClassIImportInDotMFile;

如果B类是A类的子类,则需要在B类的.h文件中导入A类的.h文件。

答案 1 :(得分:1)

我认为其他file4.h文件将使用.m。如果是,请仅在file4.h中包含file4.h中使用的内容,file4.cpp中包含其余内容。这将减少大量的包含数量,包括file4.h将不会使用无用的额外标题。

当所需.h个文件的数量开始变得不方便时,您可以将它们分组到主题标题中。例如,topic1.h可能包括file1.hfile2.h,但不包括file3.h

答案 2 :(得分:0)

如果我计划在属性声明中使用它们的类,我通常会将其他标头导入当前头文件。但是,如果类相互引用,这可能会造成一些破坏。

如果是这种情况,那么您需要在.m文件中包含标题,以便可以在类中使用它们,但是对于这些项目的任何外部访问,您可以在自定义类的位置使用id。当你用其他参考方法获取它们时,将它们抛出。

如果我包含AppDelegate.h然后引用app delegate中的其他类,我会遇到这个问题 这样做的原因是我希望在app委托中包含对当前对象的引用,但该类还使用app委托来访问其他类。在这种情况下,我将在AppDelegate.h中包含Classes,并在该类的m文件中包含AppDelegate.h。

我希望这是有道理的。