在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文件详解相关推荐

  1. IOS .pch 文件详解

    在IOS开发的项目中有一个XX_Prefix.pch XX_Prefix.pch:扩展名.pch表示"precompiled header",这是一个你工程要用到的来自于外部框架的 ...

  2. IOS 中 pch 文件详解

    在 Xcode6 之前,创建一个新工程会在 Supporting files 文件夹下面自动创建一个"工程名-Prefix.pch"文件,也是一个头文件,pch 头文件的内容能被项 ...

  3. IOS 多线程04-GCD详解 底层并发 API

    IOS 多线程04-GCD详解 底层并发 API 注:本人是翻译过来,并且加上本人的一点见解. 前言 想要揭示出表面之下深层次的一些可利用的方面.这些底层的 API 提供了大量的灵活性,随之而来的是大 ...

  4. Linux中/proc目录下文件详解

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  5. Mybatis复习笔记3:映射文件详解

    映射文件详解 参数处理(#和$的区别) #{}:可以获取map中的值或者实体对象属性的值: ${}:可以获取map中的值或者实体对象属性的值: select * from person where i ...

  6. iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)

    前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...

  7. Android - Manifest 文件 详解

    Manifest 文件 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/20899281 Manifest可以定义应用程序及其 ...

  8. javaweb web.xml文件详解

    web.xml文件详解 前言:一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程.web.xml主要用来配置Filter.Listener.Servlet等 ...

  9. oracle控制文件都一样么,Oracle控制文件详解

    一.Oracle控制文件 为二进制文件,初始化大小由CREATEDATABASE指定,可以使用RMAN备份 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等 ...

  10. linux /proc目录文件详解

    Linux中/proc目录下文件详解(一) /proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用.可以使用的文件随系统配置的变化而变化.命令proc ...

最新文章

  1. 面试中如何回答自身的“缺点”
  2. 30-35岁职场规划深谈,字字戳心
  3. 计算机科学个人陈述,计算机专业个人陈述样本
  4. 数据全裸时代,你的隐私有多容易获取?
  5. (JAVA)超大小数运算
  6. Git 分支相关操作
  7. Stack Overflow 遭黑客入侵;中国首条 5G 覆盖地铁诞生;VS Code 1.34 发布!| 极客头条...
  8. Ubuntu16.04安装VSCode
  9. android游戏编程之从零开始!JVM虚拟机原理深入解析,看这一篇就够了!
  10. 超级搜索术-朱丹-全部笔记整理
  11. 【招聘测评题】中的(行测)图形推理题基本逻辑总结(附例题)
  12. 计算机房的英语怎么读音,机房位置,Host equipment room,音标,读音,翻译,英文例句,英语词典...
  13. Matlab的eval函数
  14. RocketMQ避坑指南:java后端开发电脑配置
  15. 陈文俊 计算机科学,2019年丘成桐中学科学奖总决赛获奖结果揭晓!
  16. reviewer中文_专家审稿意见回复范文如何回复中文审稿人意见结尾如何写
  17. qt 之 生成pdf
  18. 【新闻早报简报】早上微信里发的那些新闻早报哪里来的
  19. JS小数点保留后2位
  20. C语言二维数组的初始化方法

热门文章

  1. 如何实现网站访问量统计(html页面)
  2. leetcode总结无止境系列之链表
  3. Numpy图解(三)--高维数组
  4. rails3 使用nifty
  5. 在炼数成金报名的课程!加油!
  6. 日文windows系统 oracle数据库乱码的处理
  7. ODPS SQL优化总结
  8. docker之网络管理
  9. SM2 SM3 SM4 国密版本,基于bouncycastle 实现
  10. Pandoc 安装与使用