pch让编译更快在日常的开发中,有很多地方会用到Foundation和UIKit,使用之前需要先将头文件#import进来。与C语言中的#include相似,import会把头文件里的代码copy过来,只不过#import可以避免重复引用。比如, #ifndef Test_h# define Test_h #include "Test.h" #endif 如果你的每个文件都需要引用同一个头文件,如UIKit.h,那么这个文件会被拷贝和编译多次,这会增加build的时间。 节约生命,从减少build时间开始。 预编译头文件,顾名思义,是将头文件事先编译成一种二进制的中间格式。在整个编译过程中,只编译一次,并且会有缓存,如预编译头所涉及的部分不发生改变的话,在随后的编译过程中此部分不会重新进行编译,从而大大提高编译速度。在iOS开发中,我们可以在xxx.pch中定义需要预编译的头文件,在Xcode 6 之前,自动生成的pch如下: #ifdef __OBJC__ #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #endif pch的副作用 加入pch中的头文件,在项目其他地方要使用时,就不需要再import了。这可以算是一种便利,但它也是副作用的源头。切记: pch的目的是提高编译速度,而不是让你少打几行import代码。
有节制地使用pch在Xcode 6之后,新建项目已经不会自动生成pch文件了。个人认为原因有两个:
iOS 7之后,系统的Module都可以被"semantic import"。使用起来很简单,把原来的#import换成@import即可。比如:
编译器遇到 不过,pch也并没有完全退出历史舞台。有一些场景还是会使用到,比如你的每个文件都需要用到你定义的一些方法。加入pch的文件应该满足:
有节制地用,宁可多敲几行代码,不要偷懒把很多东西都放pch里。 |
|