iOS pch文件详解

     在Xcode6之后,包括现在的Xcode7,都不会自动产生.pch文件了。貌似已经不推荐使用了。但是在看别人很多项目的时候,还是有包括这个文件,今天我们来谈谈.pch是什么吧。

      ***_Prefix.pch就是该项目的预编译头文件。.pch表示PreComplied Header,是一个工程要用到的来自于外部框架的头文件列表。Xcode将会首先会编译.pch中这些头文件,以减少在Build整个项目的时间。通常所有的文件都自动包含了pch文件,系统在编译每个.h,  .m文件前,都先会import这个文件,而不再需要单独编译每个文件中的头文件。加速了编译过程。

      如果我们不小心删掉了.pch文件,那么应该怎么办呢?自己再创建一个PCH File即可,名字可以任意取。然后再来到项目设置的Build Setting中,右上角搜索框中输入“pch”进行查找,找到一个Prefix Header,然后输入修改后的名字即可。如下:注意这里是一个相对路径。

iOS pch文件详解_第1张图片


iOS pch文件详解_第2张图片


        所以有时候我们常常把很多常用的头文件都包含到pch中,比如下面就是我的一个pch文件:

#ifndef MyPass_pch
#define MyPass_pch

// Include any system framework and library headers here that should be included in all compilation units.
// You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.

#import "AppDelegate.h"
#import <UIKit/UIKit.h>
#import "AppDelegate.h"

#endif /* MyPass_pch */

      这样,我们就不需要在所有的.h,    .m文件中包含这三个头文件了。但是请注意!!!!!!有一个例外!!!!!

      iOS项目中的AppDelegate.h文件中的#import <UIKit/UIKit.h> 不能缺少。这是因为AppDelegate.h文件是整个项目的启动文件,比pch文件早编译,所以AppDelegate.h中所需的头文件不能放入pch中。

      我在前面一篇博客《iOS定义常量的最佳实践》中就如何在项目中定义常量进行了说明,现在有了pch文件,这也变得很方便了。我们可以在pch文件中进行#define 宏定义。然后在项目的任何位置都可以使用这个宏定义,不需要显式的引入pch文件,非常方便。可惜是pch中不能定义const常量。。。



github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

你可能感兴趣的:(pch)