-
pch文件:
预编译头文件(一般扩展名为.PCH),是把一个工程中较稳定的代码预先编译好放在一个文件(.PCH)里,它们在整个工程中是较为稳定的,即在工程开发过程中不会经常被修改的代码。在我的理解里是把一些宏定义(kScreenW等),一些要在多个类中使用的头文件在此文件中书写。简单来说,在.pch文件中定义的宏定义会作用到项目中的所有文件。
-
pch文件的作用:
对于xcode6以后创建工程不在自动添加.pch文件了,很多资料认为.pch文件会影响效率。我觉得.pch文件总体上会加速编译,因为xcode会对.pch文件中的定义预编译并缓存。之所以减慢编译速度应该是因为很多开发者使用方式不对吧。
我们可以想到.pch是把双刃剑,提供便利性的同时如果使用不当可能增加Build的时间。 -
使用注意点:
- 不要把绝大多数甚至是所有的宏定义放进来。
- 在某个类或者某几个类中使用的宏定义别放进来。
- 放置公用性高的头文件,比如使用率较高的fundation框架,第三方库头文件。
- 为了整洁性的要求,建议把公用性低的宏定义整理到某个头文件再将该头文件写入.pch文件。
-
pch文件的创建
- 新建文件(command+N)选择PCHFile
- 点击项目,选择Bulid Settings,在搜索框中写入Prefix Header
- 找到这一栏Precompile Prefix Header,将NO改为Yes
- 在Prefix Header这一栏后面双击出现白框,输入$(SRCROOT)/项目名/PCH文件名.pch 。
注意这里的SRCROOT一定要大写,该目录下的所有文件不能出现汉字否则找不到路径。如下图的路径为:$(SRCROOT)/myCar/Resource/Global/PrefixHeader.pch
- 到这里已经配置完毕,快捷键(Command+B)编译下看是否报错,报错请看上面的注意点。没报错的话可以在pch文件写宏定义测试下,以及导入一些头文件。
#ifndef PrefixHeader_pch
#define PrefixHeader_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.
//下面是宏定是获取屏幕的宽度和高度
#define KScreenW [UIScreen mainScreen].bounds.size.width
#define KScreenH [UIScreen mainScreen].bounds.size.height
#endif /* PrefixHeader_pch */