许多开发人员正在为Prefix.pch
添加各种便利宏。但我的问题是Prefix.pch
文件是什么。
如果我从Prefix.pch
删除Xcode
文件,我的应用程序会运行吗?或者它会显示任何错误?或者它会在构建期间崩溃吗?
如何在没有Prefix.pch
文件
答案 0 :(得分:105)
Prefix.pch
是预编译的标头。预编译头文件被发明以便更快地编译。这些文件不是一遍又一遍地解析相同的头文件,而是提前解析一次。
在Xcode中,您可以在“前缀标头”中添加所需的头文件导入,并启用Precompile Prefix Header
以便进行预编译。但前缀标题背后的想法与预编译不同。
前缀标头隐式包含在每个源文件的开头。这就像每个源文件添加
#import "Prefix.pch"
位于文件顶部,其他任何内容。
您可以删除预编译的标头。这个问题已经在我正在链接的线程中得到了回答。它包含您需要的所有信息以及有用的评论。
答案 1 :(得分:21)
.pch是预编译标题。
在C和C ++编程语言中,头文件是一个文件,其文本可能由C预处理器自动包含在另一个源文件中,通常通过在源文件中使用编译器指令来指定。
前缀标头被编译并存储在缓存中,然后在编译期间自动包含在每个文件中。这可以加快编译速度,并允许您包含文件而无需为使用它的每个文件添加import语句。它们不是必需的,并且在您更改它们时实际上会减慢编译速度。
在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
预编译标题-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
:
开发人员必须管理.pch
文件,这会增加支持该文件的成本。
下一步是@import
[About]