什么是Xcode中的Prefix.pch文件?

时间:2014-05-14 07:49:16

标签: ios xcode

许多开发人员正在为Prefix.pch添加各种便利宏。但我的问题是Prefix.pch文件是什么。

  • 如果我从Prefix.pch删除Xcode文件,我的应用程序会运行吗?或者它会显示任何错误?或者它会在构建期间崩溃吗?

  • 如何在没有Prefix.pch文件

  • 的情况下运行我的应用程序

4 个答案:

答案 0 :(得分:105)

预编译头。

它是什么?

Prefix.pch是预编译的标头。预编译头文件被发明以便更快地编译。这些文件不是一遍又一遍地解析相同的头文件,而是提前解析一次。

的Xcode

在Xcode中,您可以在“前缀标头”中添加所需的头文件导入,并启用Precompile Prefix Header以便进行预编译。但前缀标题背后的想法与预编译不同。

前缀标头隐式包含在每个源文件的开头。这就像每个源文件添加

#import "Prefix.pch"

位于文件顶部,其他任何内容。

删除它。

您可以删除预编译的标头。这个问题已经在我正在链接的线程中得到了回答。它包含您需要的所有信息以及有用的评论。

Is it OK to remove Prefix.pch file from the Xcode project?

答案 1 :(得分:21)

什么是Prefix.pch文件?

.pch是预编译标题。

在C和C ++编程语言中,头文件是一个文件,其文本可能由C预处理器自动包含在另一个源文件中,通常通过在源文件中使用编译器指令来指定。

前缀标头被编译并存储在缓存中,然后在编译期间自动包含在每个文件中。这可以加快编译速度,并允许您包含文件而无需为使用它的每个文件添加import语句。它们不是必需的,并且在您更改它们时实际上会减慢编译速度。

是的,您可以编译并运行没有.pch文件的项目

在Xcode中,转到目标的构建设置(Command-Option-E,构建选项卡)并取消选中预编译前缀头(GCC_PRECOMPILE_PREFIX_HEADER)。如果您愿意,也可以删除前缀标题设置的值。

另请注意,

不要将宏放在a.pch文件中!根据定义,.pch文件是项目特定的预编译头。它实际上不应该在项目的上下文之外使用,除了#includes和#imports之外它不应该包含任何东西。

如果你有一些宏,并且想要在标题之间共享,那么将它们粘贴在他们自己的头文件中 - Common.h或者其他 - 并且#include在.pch的开头。

答案 2 :(得分:7)

前缀标头被编译并存储在缓存中,然后在编译期间自动包含在每个文件中。这可以加快编译速度,并允许您包含文件而无需为使用它的每个文件添加import语句。它们不是必需的,并且在您更改它们时实际上会减慢编译速度。

通常.pch文件命名形式为yourProjectName-Prefix.pch

答案 3 :(得分:0)

历史:

#include => #import => .pch

#include vs #import

预编译标题-prefix.pch

#include and @import有一个缺点-构建时间,因为编译器必须解析和编译导入的.h个文件的次数。

Precompiled header file - .pch-收集公共标题。该文件经过预编译后,可以在源文件中使用,从而加快了构建时间。

让我们看一下Prefix.pch示例:

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
#endif

要添加.pch文件,请转到Build Settings

enter image description here

开发人员必须管理.pch文件,这会增加支持该文件的成本。

下一步是@import [About]