从面向对象的角度(主要是C ++和目标C),
将项目中使用的所有头文件包含在单个(.h)中是一种很好的编程习惯,只需在所有实现文件中包含此头文件以及(#)使用"头部保护& #34;和" #pragma一次" (或#import)?
这可能是什么负面影响?
答案 0 :(得分:5)
这是一个非常糟糕的主意。它会彻底减慢你的编译过程。如果您有多个标题需要访问每个文件或大多数文件,请检查预编译的头文件(xCode中的.pch)。这是正确的方法。
扩展答案:在创建课程时,您希望在.h文件中包含尽可能少的标题。将它们放在.m中会更好,因为它们不会影响包含标题的其他类的编译时间。当您需要事先知道它的大小时,您只需要在.h中完整定义类型。但是你总是知道指针的大小,所以前向声明就足够了:
MyObject.h
#import "MyStruct.h"
@class Foo; //Forward declaration of Foo.
@class MyObject
{
Foo *foo; //No problem, you know the size. You can import Foo.h in MyObject.m
MyStruct struct; //Oops, this is not a pointer. You need to import it's definition right here.
}
@end
MyObject.m
#import "MyObject.h"
#import "Foo.h"
...
- (void)doStuffWithFoo
{
[foo doStuff]; //If you don't import Foo.h, this will throw a compiler error.
}