我主要是指应用程序级别的导入,而不是在构建库时,在这种情况下很明显为什么要避免在.pch文件中导入标题。
答案 0 :(得分:5)
.pch
文件的要点是它可以预先编译一次并保持不变。
如果您导入.pch
中的所有应用程序标头,则每次更改任何一个标头时都必须重新编译它,否定所有好处。更糟糕的是,这最终意味着必须重建项目中的每个其他文件,因为.pch
的内容已更改。
.pch
应该引入的唯一标头是几乎永远不会更改的标头,例如系统标头。
答案 1 :(得分:1)
将所有导入添加到pch可能会使您的构建变慢。这真的取决于项目。
假设您有100个.m文件,其中一个使用AVFoundation。如果将AVFoundation标头添加到pch中,则编译器必须处理每个.m文件的较大pch,但只有其中一个受益于它。这可能会更慢或者可能不会。可以轻松衡量它的差异。
如果您正在考虑将项目自己的.h文件添加到pch,这肯定会使您的构建变慢,因为当您的任何一个.h文件发生更改时,Xcode将重新编译每个.m文件。
仅在需要的地方包含框架标题的另一个原因是,如果您决定将源文件复制到另一个项目,则可以更轻松地重用源文件。