码迷,mamicode.com
首页 > 其他好文 > 详细

Xcode6关于Pch文件

时间:2014-10-27 00:26:24      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   使用   sp   文件   

在Xcode6之前新建项目,系统会帮我们自动新建一个以工程名为名字的pch (precompile header)文件,在Supporting FIles文件下会看到一个以  -Prefix.pch结尾文件的文件,pch全称是“precompiled header”,也就是预编译头文件,该文件里存放的工程中一些不常被修改的代码,比如常用的框架头文件,在开发过程中,可以将那些整个工程都广泛使用的头文件包含在该文件下,编译器就会自动的将pch文件中的头文件添加到所有的源文件中去,这样在需要使用相关类的时候不需要使用import就可以直接使用头文件中的内容,很大程度上带来了编程的便利性,但潜在的也带来了一些问题,这也是在Xcode6中默认不再创建pch的原因吧。

个人理解,Xcode 6去掉Precompile Prefix Header的主要原因在于:

(1)去掉自动导入的系统框架类库的头文件,可以提高原文件的复用性,便于迁移。

(2)一个肥胖无比的Prefix Header会大大增加编译时间。

为了取代在Prefix Header中自动导入的框架,可以在每一个需要导入系统框架的文件中通过@import来手动导入,当然要确保Build Settings中的Enable Modules是打开的。

如果在Prefix Header中导入了<objc/runtime.h>,那么我们在工程的每一个文件中可以免费获得使用<objc/runtime.h>的权利,而无需手动在每一个.h/.m文件中导入<objc/runtime.h>。该文件确有其方便之处。

   如果一定要用到Precompile Prefix Header,那么怎么在Xcode6中配置Precompile Prefix Header,添加一个pch文件呢?

(1)Command+N,打开新建文件窗口:iOS->Other->PCH file,创建一个pch文件,记住你创建的文件名(命名最好还是已"工程名-Prefix.pch"形式命名,例如a-Prefx.pch),等下配置路径要用:

bubuko.com,布布扣

例如pch文件名叫:DaiDaiFa.pch

bubuko.com,布布扣,

(2)接下来设置Build Settings,配置一些信息(配置路径时pch文件名要跟你当时创建时的pch文件名要相同):bubuko.com,布布扣

 

如下图新建了一个a-Prefix.pch文件

注意:开关Precompile Prefix Header时,pch的编译和导入机制是有很大不同的。bubuko.com,布布扣

 

 

 

有些人对Precompile Prefix Header的值可能有些疑问(Yes/No),在这里解释下:

(1)如果Precompile Prefix Header为YES,那么pch会被预编译,预编译后的pch文件会被缓存起来,从而提高编译速度。
 
(2)如果Precompile Prefix Header为NO,那么pch不会被预编译,而是在每一个用到它导入的框架类库的.m文件中编译一次,降低了编译速度。
例如a-Prefix.pch导入了<objc/runtime.h>,ViewController.m和AppDelegate.m中都使用了objc_property_t这个类型(注意ViewController.h/m和AppDelegate.h/m都没有另外导入<objc/runtime.h>),那么在Build的过程中,在编译ViewController.m和AppDelegate.m时,a-Prefix.pch会被编译2次,每个.m文件编译一次。
 

如果Precompile Prefix Header为NO,那么每个引用了pch内容的.m文件都要编译一次pch,可能Apple会另外做缓存机制,但是这样还是降低了编译的速度。

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

 

Xcode6关于Pch文件

标签:style   blog   http   color   io   os   使用   sp   文件   

原文地址:http://www.cnblogs.com/Fc-ios/p/4053027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!