有没有理由不应该在.pch文件中添加所有导入?

时间:2013-02-05 19:12:43

标签: iphone objective-c xcode ipad

我主要是指应用程序级别的导入,而不是在构建库时,在这种情况下很明显为什么要避免在.pch文件中导入标题。

2 个答案:

答案 0 :(得分:5)

.pch文件的要点是它可以预先编译一次并保持不变。

如果您导入.pch中的所有应用程序标头,则每次更改任何一个标头时都必须重新编译它,否定所有好处。更糟糕的是,这最终意味着必须重建项目中的每个其他文件,因为.pch的内容已更改。

.pch应该引入的唯一标头是几乎永远不会更改的标头,例如系统标头。

答案 1 :(得分:1)

将所有导入添加到pch可能会使您的构建变慢。这真的取决于项目。

假设您有100个.m文件,其中一个使用AVFoundation。如果将AVFoundation标头添加到pch中,则编译器必须处理每个.m文件的较大pch,但只有其中一个受益于它。这可能会更慢或者可能不会。可以轻松衡量它的差异。

如果您正在考虑将项目自己的.h文件添加到pch,这肯定会使您的构建变慢,因为当您的任何一个.h文件发生更改时,Xcode将重新编译每个.m文件。

仅在需要的地方包含框架标题的另一个原因是,如果您决定将源文件复制到另一个项目,则可以更轻松地重用源文件。