Xcode6及之后为什么要去掉PCH文件

Xcode6及之后的Xcode版本,创建新工程默认不再创建PCH文件,但是仍可以手动配置PCH文件,具体手动配置方法,Google即可。

先介绍一下这个PCH文件,这是一个预编译文件,处理头文件引用,宏定义等。在开发过程中,可以将那些整个工程都广泛使用的头文件包含在pch文件下,编译器就会自动的将pch文件中的头文件添加到所有的源文件中去,这样再需要使用相关类的时候不需要使用import就可以直接使用头文件中的内容,很大程度上带来了编程的便利性,提高效率。

利用这个特性一般在此文件里做这些工作:

1. 常用到的宏定义。

2. 开发当中可能需要被经常包含多次的.h文件

3. log输出开关控制。在release版本里面不需要输出。

但是为什么在Xcode6之后,苹果将其从默认创建状态给移除了呢?苹果肯定有他的考虑,但是一直没有找到官方的解释。个人猜测有以下原因:

1. 最大限度的实现模块化,各个模块之间耦合度越低越好,PCH文件的存在会增加各个模块之前的耦合度,降低源文件的复用性,不便于迁移。

2. PCH文件会增加Build Time,在Build Setting中,如果Precompile Prefix Header为No,则每个引用了PCH内容的.m文件都要编译一次PCH,Apple可能会另外做缓存机制,但是还是降低了编译的速度。

那么,没有了PCH文件,但是常用的宏,开发中多次包含的.h文件,log输出开关还要实现那该怎么办呢?

1. 在文件中import需要的头文件;Define放在需要用到的文件中。

2. log输出、宏定义等可以自己创建一个头文件,然后import到需要的文件中去。

3. 各个功能模块之间最好有自己的头文件,主要包含一些log输出、宏定义等,最大限度的减少耦合,让代码复用,迁移更加容易。

既然Apple标准都建议我们不用PCH了,那么还是尽量少用吧。当然,如果一定要用,还是尽量减少pch文件中的内容,降低工程对pch文件的依赖性,便于日后的迁移和解耦。

参考资料

http://www.cocoachina.com/ios/20140916/9635.html

http://stackoverflow.com/questions/24158648/why-isnt-projectname-prefix-pch-created-automatically-in-xcode-6

你可能感兴趣的:(Xcode6及之后为什么要去掉PCH文件)