IOS 中 pch 文件详解
在 Xcode6 之前,创建一个新工程会在 Supporting files 文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch 头文件的内容能被项目中的其他所有源文件共享和访问。是一个预编译文件。从 Xcode6 开始,创建新工程时 Xcode 就没有自动创建 pch 文件了,不过可以自己手动创建,如下所示:
pch 文件的命名一般与工程名相同。苹果之所以在之后的 Xcode 版本中不再自动生成 pch 文件,是因为把大量的头文件和宏定义放到 pch 文件内,导致编译时间过长,去掉它可以加快编译时间以增加用户体验,虽然可能失去了编程的便利性。
创建了 pch 文件之后并不代表就完成了,还需指定预编译相关设置,如下所示:
在工程的TARGETS里边 Building Setting 中搜索Prefix Header,然后把 Precompile Prefix Header 右边的 NO 改为 YES(将Precompile Prefix Header为YES,预编译后的 pch 文件会被缓存起来,可以提高编译速度),修改 pch 文件的路径(相对路径,相对于工程文件位置的路径)。
完成以上步骤后,编译(cmd+B)一下程序即可。
下面来讲讲 pch 文件的作用:
1. 放一些全局的宏
有时候一个宏定义会在多个文件都会出现,为了避免在每个文件中都进行一次宏定义,此时可在 pch 文件中进行宏定义,可作为全局使用。
2. 导入一些全局都需要的头文件,一般开发中放工具类的头文件, 或者分类头文件等
例如有时候需要在多个文件都要导入某头文件,可与宏定义一样,在 pch 文件中声明该头文件。
3. 管理日志输出
日志输出非常耗性能,一般发布的时候不需要日志输出,只有调试的时候才需要。通常在开发中弄一个自己的日志输出,不要系统自带的 NSLog 。
#define FGLog(...) NSLog(__VA_ARGS__)
… 表示能接收任何参数;
VA_ARGS 表示左边 … 的参数会替代到右边NSLog中。,一般双下划线表示系统宏。
(1) 如果不想打印了,直接注释后边的宏
#define FGLog(...) // NSLog(__VA_ARGS__);
(2) 还可以通过一个宏进行条件编译,在调试阶段,Xcode会自动定义一个 DEBUG 宏,利用这个宏,就能进行条件编译。
#ifdef DEBUG //调试阶段
#define FGLog(...) NSLog(__VA_ARGS__)
#else //发布阶段
#define FGLog(...)
#endif
默认状态下,直接运行程序都是处理调试阶段,可以通过如下方法实现灵活的软件运行状态转换(默认软件运行在 debug 或者 release 状态):
注意:在pch写的有关 OC 的东西,最好放在 #ifdef OBJC, Xcode 在每个 OC 文件中都定义了这个宏,也就意味着只有 OC 中的文件才拥有这些宏,避免项目中有 C 文件的时候报错。如果在 C 文件中,使用 #import,就会报错,因为 C 文件不能识别 #import,只有 OC 文件才能识别。在 pch 中的东西能被项目中的所有文件共享,C 文件共享 #import 就报错。
IOS 中 pch 文件详解相关推荐
- iOS中ImageIO框架详解与应用分析
2019独角兽企业重金招聘Python工程师标准>>> iOS中ImageIO框架详解与应用分析 一.引言 ImageIO框架提供了读取与写入图片数据的基本方法,使用它可以直接获取到 ...
- [置顶] iOS中 支付宝钱包详解/第三方支付
[置顶] iOS中 支付宝钱包详解/第三方支付 韩俊强的博客 每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 一.在app中成功完成支付宝支付的过程 1.申请支付 ...
- Maven中pom文件详解
在IDE中使用Maven IDE工具 MyEclipse 集成maven插件 Eclipse Eclipse For Java EE IDEA 集成Maven插件 在IDE中 配置Maven 指定 ...
- GAZEBO 中 sdf文件详解
转载自:https://blog.csdn.net/weixin_44900096/article/details/103017522 GAZEBO 中 sdf文件详解 木木木一 2019-11-11 ...
- Android 中rc文件详解
rc文件详解 转载https://www.cnblogs.com/zhougong/p/8889040.html
- IOS .pch 文件详解
在IOS开发的项目中有一个XX_Prefix.pch XX_Prefix.pch:扩展名.pch表示"precompiled header",这是一个你工程要用到的来自于外部框架的 ...
- iOS中.pch文件如何使用
pch 可以用来存储共享信息,比如设备屏幕的宽度,高度.版本号等等 公用信息 Xcode 老版本会自动为我们创建pch文件,新版本开始不自动创建了,如果需要使用可以自己手动创建 创建完成后可以在里面定 ...
- (转) eclipse项目中.classpath文件详解
背景:对于java项目中.classpath文件中的相关定义一直不是很了解,有必要进行深入的学习. 1 前言 在使用eclipse或者myeclipse进行Java项目开发的时候,每个project( ...
- Linux中service文件详解
1. 什么是systemd service systemd service是一种以 .service 结尾的配置文件,是一个专用于 Linux 操作系统的系统与服务管理器.简单来说,用于后台以守护精灵 ...
最新文章
- java并发处理时mvel表达式处理慢,一文说清!
- sqoop从HDFS导出数据到Mysql,卡在Running job: job_1571036741208_0010不动了,或者map 100% reduce 0%不动了
- 我对ThreadLocal的理解
- python爬取苏州天气并用excel来保存
- 获取页面中超链接数量_微信订阅号自定义菜单添加页面模板使用教程。
- CSS3 background-clip属性
- 如何做相册_我是如何对2000张照片进行批量套版的
- Java基础面试题:AQS组件总结
- 190329每日一句
- java设计模式--创建模式--单例模式
- 英文版 office 中的中文字体
- 系统集成项目管理工程师10大管理47个过程域输入输出工具(项目成本管理)
- 【delete用法 与 object(对象)的创建】
- python tkinter窗口组件Canva
- c++语言常量,C++常量(constant)
- control reaches end of non-void function
- 供应链金融之——预付款融资模式
- 12306 APP 同一乘客、同列火车候补订单与硬座的处理规则!
- SanDisk Cruzer CZ50 8GB U盘 质量怎样?不行!
- sql server 2012服务器安装