xcode6以后, 使用.pch

http://blog.csdn.net/lihuiqwertyuiop/article/details/39268101

总结: 

1. 创建.pch文件
2. Apple LLVM 6.1 - Language 目录下的 Precompile Prefix Header 选择为: YES
3. Apple LLVM 6.1 - Language 目录下的 Prefix Header 加入你.pch的路径: 工程名/文件名, (例如XMPPProject/XMPPProject-Prefix.pch)

在Xcode6之前,新建一个工程的时候,系统会帮我们自动新建一个以工程名为名字的pch (precompile header)文件,在开发过程中,可以将那些整个工程都广泛使用的头文件包含在该文件下,编译器就会自动的将pch文件中的头文件添加到所有的源文件中去,这样在需要使用相关类的时候不需要使用import就可以直接使用头文件中的内容,很大程度上带来了编程的便利性,但潜在的也带来了一些问题,这也是在Xcode6中默认不再创建pch的原因吧。

关于pch的得与失,stackoverflow上有段话讲的比较透彻:http://stackoverflow.com/questions/24158648/why-isnt-projectname-prefix-pch-created-automatically-in-xcode-6

As to where to put code that you would put in a prefix header, there is no code you should put in a prefix header. Put your imports into the files that need them. Put your definitions into their own files. Put your macros...nowhere. Stop writing macros unless there is no other way (such as when you need __FILE__). If you do need macros, put them in a header and include it.

The prefix header was necessary for things that are huge and used by nearly everything in the whole system (like Foundation.h). If you have something that huge and ubiquitous, you should rethink your architecture. Prefix headers make code reuse hard, and introduce subtle build problems if any of the files listed can change. Avoid them until you have a serious build time problem that you can demonstrate is dramatically improved with a prefix header.

In that case you can create one and pass it into clang, but it‘s incredibly rare that it‘s a good idea.

但有些时候,还是需要pch文件的,那么怎么在Xcode6中添加一个pch文件呢?

首先,Command+N,打开新建文件窗口:ios->other->PCH file,创建一个pch文件,添加需要引入的头文件名:

其次,修改工程配置文件,将刚刚创建的PCH file的路径添加到building setting中的precompile header选项中去,注意debug和release两栏都要添加:

至此,大功告成,编译一遍,新添加的pch文件就可以正常使用了^_^。

时间: 2024-10-11 12:37:21

xcode6以后, 使用.pch的相关文章

Xcode6为什么干掉pch(Precompile Prefix Header)&如何添加pch文件

一直在用xcode6开发,但项目都是在xcode5上创建的,所以一直没注意到,xcode6竟然干掉pch文件了. 为什么xcode6没有自动创建pch文件呢? 简单地看:我们在写项目的时候,大部分宏定义,头文件导入都在这里,Xcode6去掉Precompile Prefix Header的主要原因可能在于Prefix Header大大的增加了Build的时间.没有了Prefix Header之后就要通过手动@import来手动导入头文件了,在失去了编程便利性的同时也降低了Build的时间.具体原

Xcode6中添加pch文件

1. pch文件: pch表示“precompiled header”,叫做预编译头文件,Xcode6之后pch文件就需要手动添加,pch文件中一般放一些基本不会改变的代码,比如一些宏定义这样整个工程都可以使用或者一些框架的头文件. pch文件的目的是提高编译的效率,Xcode中某个文件被修改了,任何包含该文件的文件都需要重新编译.如果pch文件被修改了,pch所包含的所有文件都会重新编译,这样会消耗大量的时间. pch文件中定义宏定义和头文件: 2.Xcode6下添加pch文件步骤: (1)添

苹果试图做?XCode6 放弃prefix.pch档

当我们升级到XCode6后, 新建project发现默认是没有pch文件的.非常多人開始不习惯了,苹果到底为什么要取消这一个pch文件. 苹果觉得,因为组件单一模块的原因.你不应该在你的prefix代码中放入不论什么的代码,把他们放在你确实须要放入的文件里.把你的定义放到属于他们的文件里. 尽量不要使用宏定义(define)..除非是非不得已的时候.(这里 插一句 不使用宏定义的原因是 宏定义是在预编译的时候处理的 因此 当你改动宏定义的时候 会导致大量的代码被又一次编译 另外 宏定义存在很多潜

iOS8 【xcode6中添加pch全局引用文件】

前沿:xcode6中去掉了pch,为了一些琐碎的头文件引用,加快了 编译速度! code6之前的版本建项目就自动添加了是这样的: xcode6后的版本要自己手动的添加步骤如下: 1)  2) 3) $(SRCROOT)/pchFile.pch 这样就ok了! ------------------------------------------------------------------------------------------------------------------ 可能遇到问

XCode6 生成prefix.pch文件

XCode6里, 新建工程默认是没有pch文件的,苹果取消pch文件这一点肯定有它的道理,刚开始很多人可能不适应,如果我们想使用pch文件,需要手动添加,添加步骤如下:(依旧直接上图) @ 取消的原因: Stackoverflow上有一个人对此的解释是这样的:       I suspect because of modules, which remove the need for the  #import <Cocoa/Cocoa.h>.       As to where to put c

Xcode6.1 Prefix.pch添加方式

本文转载:http://blog.csdn.net/foolsong/article/details/40653497 在Xcode6.1中创建工程默认是没有Prefix.pch文件的,需要我们手动的创建 1.首先创建一个  .pch 文件 命名方式:项目名-Prefix.pch 2.进行相关的配置

【iOS开发-84】一般项目中,Xcode6怎么使用pch文件?

pch文件重要作用之一,是可以写一些宏变量,而宏变量主要是判断设备.判断系统版本这些. 在Xcode6中需要手动建立pch文件. (1)先建立一个pch文件 (2)设置,使得这个pch文件能被使用,即把这个pch文件放在整个项目的头文件中,即可被任意文件共用.在右边点击输入$(SRCROOT)/项目名/PCH文件名,如$(SRCROOT)/Net Lottery/WPPrefixHeader.pch,在Debug和Release两栏都设置. (3)成功,小试,输入以下一行代码,以后判断iOS7以

Xcode6 自行添加.pch文件

在Xcode6之前创建工程就会有.pch文件,但6需要自己创建.步骤如下: 1.创建.pch文件 2.将.pch添加到工程中

苹果意欲何为?XCode6 舍弃prefix.pch文件

当我们升级到XCode6后, 新建工程发现默认是没有pch文件的,很多人开始不习惯了,苹果究竟为什么要取消这一个pch文件. 苹果认为,由于组件单一模块的原因,你不应该在你的prefix代码中放入任何的代码,把他们放在你确实需要放入的文件中.把你的定义放到属于他们的文件中. 尽量不要使用宏定义(define)..除非是非不得已的时候,(这里 插一句 不使用宏定义的原因是 宏定义是在预编译的时候处理的 因此 当你修改宏定义的时候 会导致大量的代码被重新编译 另外 宏定义存在许多潜在的bug 是因为