我应该将所有头文件放入Prefix.pch吗?

时间:2014-03-27 12:18:26

标签: objective-c

建议在Prefix.pch中引用我的所有头文件,然后在开发过程中不必输入#import头文件吗?

5 个答案:

答案 0 :(得分:2)

我不推荐这个。

主要原因是,头文件可能会在开发过程中发生变化。如果更改了一个标题,则会导致pch变脏,必须重建,现在整个项目将重建。这非常耗时,并且与pch文件的完整原因背道而驰。

如果您创建一个新的头文件,将其添加到pch,现在触发并完全重建,也是如此。

但这里没有单一的答案。您可能拥有一个永远(或很少)更改的第三方库,它具有相当大的头部密集性,因此预编译它可能是减少构建时间的一种方法。试验看看。

答案 1 :(得分:1)

从标准的角度来看,您的包含应尽可能少。实际上,您不应该包含任何您不需要编译成任何文件的内容。因此,在每个.h文件中,您应该主要包含超类,并对所有其他引用使用@class,然后仅包含在.m文件中。这样可以提供有关每个类/文件要求的最清晰信息,并最大限度地减少循环问题。

答案 2 :(得分:1)

预编译的头文件用于一个目的:使编译更快。它被编译并存储在缓存中,并在编译期间自动包含在每个源文件中。就像每个源文件一样,

#import "Prefix.h"

这对于项目范围的#defines来说非常方便。 (仅供参考,#define是一种代码味道)

Xcode引用:

  

如果内容是预编译前缀头将是最有效的   前缀标题或其包含的任何文件很少更改。如果   前缀标题的内容或它包含的任何文件都会更改   通常,可能会对整体构建时间产生负面影响。

更明确的解释是here

在.pch中#import源文件头时请记住这一点。作为提示,您可以将Prefix.h用于常量和实用程序源文件的#import。

答案 3 :(得分:0)

如果您需要在大多数其他类中使用该文件/类,则应将头文件添加到Prefix.pch。如果您只需要在一个或两个其他类中使用头文件,则不会将其添加到.pch中,因为编译器编译文件需要更多时间,并且每次要运行项目时都会发生这种情况

答案 4 :(得分:-1)

我将所有标题添加到Prefix.pch,我不得不声称自那时起生活更容易。我只是不必导入始终标题,相信我,生活更容易。 : - )