iOS pch文件详解
在Xcode6之后,包括现在的Xcode7,都不会自动产生.pch文件了。貌似已经不推荐使用了。但是在看别人很多项目的时候,还是有包括这个文件,今天我们来谈谈.pch是什么吧。
***_Prefix.pch就是该项目的预编译头文件。.pch表示PreComplied Header,是一个工程要用到的来自于外部框架的头文件列表。Xcode将会首先会编译.pch中这些头文件,以减少在Build整个项目的时间。通常所有的文件都自动包含了pch文件,系统在编译每个.h, .m文件前,都先会import这个文件,而不再需要单独编译每个文件中的头文件。加速了编译过程。
如果我们不小心删掉了.pch文件,那么应该怎么办呢?自己再创建一个PCH File即可,名字可以任意取。然后再来到项目设置的Build Setting中,右上角搜索框中输入“pch”进行查找,找到一个Prefix Header,然后输入修改后的名字即可。下面我来进行实际操作一下:
(1)选择PCH File,创建。
。
(2)pch文件的名称一般为"项目名-Prefix.pch".由于该项目的名称为MyFirstApp. 所以在下面输入"MyFirstApp-Prefix"即可。请注意:一定要勾选下面的Targets.!!!!!!
.
(3)创建完成后我们需要设置pch文件的路径,进入Build Setting ,在搜索框中输入prefix header搜索,找到如下地方,直接输入pch文件的名称即可。
。
此时直接输入的是相对路径,项目可以直接访问到。我也在网上看到有的人是用“MyFirstApp/MyFirstApp-Prefix.pch”这样的方式访问的,大家也可以去尝试一下是否可行。如果我想用的是绝对路径访问,那么应该怎么写呢(虽然不推荐绝对路径!)?那就是直接把pch文件拖入到输入框中即可,就会自动生成绝对路径了。
在该步骤中,推荐把上面的"Precompile Prefix Header"设置为YES。
(4)把常用的头文件都包含到pch中,比如下面就是我的一个pch文件:
#import "AppDelegate.h"
#import <UIKit/UIKit.h>
#import "AppDelegate.h"#define MYNAME lala
这样,我们就不需要在所有的.h, .m文件中包含这三个头文件了。但是请注意!!!!!!有一个例外!!!!!
iOS项目中的AppDelegate.h文件中的#import <UIKit/UIKit.h> 不能缺少。这是因为AppDelegate.h文件是整个项目的启动文件,比pch文件早编译,所以AppDelegate.h中所需的头文件不能放入pch中。
我在前面一篇博客《iOS定义常量的最佳实践》中就如何在项目中定义常量进行了说明,现在有了pch文件,这也变得很方便了。我们可以在pch文件中进行#define 宏定义。然后在项目的任何位置都可以使用这个宏定义,不需要显式的引入pch文件,非常方便。可惜是pch中不能定义const常量。。。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
iOS pch文件详解相关推荐
- IOS .pch 文件详解
在IOS开发的项目中有一个XX_Prefix.pch XX_Prefix.pch:扩展名.pch表示"precompiled header",这是一个你工程要用到的来自于外部框架的 ...
- IOS 中 pch 文件详解
在 Xcode6 之前,创建一个新工程会在 Supporting files 文件夹下面自动创建一个"工程名-Prefix.pch"文件,也是一个头文件,pch 头文件的内容能被项 ...
- IOS 多线程04-GCD详解 底层并发 API
IOS 多线程04-GCD详解 底层并发 API 注:本人是翻译过来,并且加上本人的一点见解. 前言 想要揭示出表面之下深层次的一些可利用的方面.这些底层的 API 提供了大量的灵活性,随之而来的是大 ...
- Linux中/proc目录下文件详解
Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...
- Mybatis复习笔记3:映射文件详解
映射文件详解 参数处理(#和$的区别) #{}:可以获取map中的值或者实体对象属性的值: ${}:可以获取map中的值或者实体对象属性的值: select * from person where i ...
- iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)
前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...
- Android - Manifest 文件 详解
Manifest 文件 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/20899281 Manifest可以定义应用程序及其 ...
- javaweb web.xml文件详解
web.xml文件详解 前言:一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程.web.xml主要用来配置Filter.Listener.Servlet等 ...
- oracle控制文件都一样么,Oracle控制文件详解
一.Oracle控制文件 为二进制文件,初始化大小由CREATEDATABASE指定,可以使用RMAN备份 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等 ...
- linux /proc目录文件详解
Linux中/proc目录下文件详解(一) /proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用.可以使用的文件随系统配置的变化而变化.命令proc ...
最新文章
- 面试中如何回答自身的“缺点”
- 30-35岁职场规划深谈,字字戳心
- 计算机科学个人陈述,计算机专业个人陈述样本
- 数据全裸时代,你的隐私有多容易获取?
- (JAVA)超大小数运算
- Git 分支相关操作
- Stack Overflow 遭黑客入侵;中国首条 5G 覆盖地铁诞生;VS Code 1.34 发布!| 极客头条...
- Ubuntu16.04安装VSCode
- android游戏编程之从零开始!JVM虚拟机原理深入解析,看这一篇就够了!
- 超级搜索术-朱丹-全部笔记整理
- 【招聘测评题】中的(行测)图形推理题基本逻辑总结(附例题)
- 计算机房的英语怎么读音,机房位置,Host equipment room,音标,读音,翻译,英文例句,英语词典...
- Matlab的eval函数
- RocketMQ避坑指南:java后端开发电脑配置
- 陈文俊 计算机科学,2019年丘成桐中学科学奖总决赛获奖结果揭晓!
- reviewer中文_专家审稿意见回复范文如何回复中文审稿人意见结尾如何写
- qt 之 生成pdf
- 【新闻早报简报】早上微信里发的那些新闻早报哪里来的
- JS小数点保留后2位
- C语言二维数组的初始化方法