PCH文件的使用

摘要:
这里的原始PCH文件是头文件。PCH文件的特点是,默认情况下可以访问项目中的所有其他代码文件,而无需显示和导入PCH文件,即PCH文件是全局的。

原文在此

PCH(Prefix Header File)文件就是一个头文件。PCH文件的特点是: 项目中的所有其他代码文件无需显示导入该PCH文件, 默认就都可以访问(其他文件无需手动#import该 pch文件就能使用),也就是说,pch文件是全局的。

使用pch文件的好处:

  1. 经常使用的某个类的头文件,放入pch文件,避免每次都去添加;
  2. 在整个项目中经常使用到的同一个宏定义;
  3. 在项目调试中常使用很多NSLog()函数打印信息调试,在项目完成时,可以在pch文件中使用条件编译,一次全部清除掉。

使用pch文件的缺点:

 由pch文件的特点可知,在项目编译是时,每编译一个文件都要添加pch文件,所以会非常消耗编译器性能,所以,从Xcode6开始,创建工程时默认不再创建pch文件,苹果不再推荐使用。但有时在项目开发中pch文件的好处还是很明显的,所以就需要我们自己创建。创建方法如下:

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

 PCH文件的使用第1张


     其次,修改工程配置文件,将刚刚创建的PCH file的路径添加到building setting中,操作如下:选中项目 -> Build Setting -> All -> 搜索"prefix head" -> 修改Prefix Header的内容为:

 "$(SRCROOT)/$(PRODUCT_NAME)/PrefixHeader.pch"

(如果有问题,换下面的方式,可能会与中文有关)

"$(SRCROOT)/对应的文件夹名/PrefixHeader.pch"


 PCH文件的使用第2张

 

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

pch的参考代码如下:

 

#ifndef PrefixHeader_pch

#define PrefixHeader_pch

 

// Include any system framework and library headers here that should be included in all compilation units.

// You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.

 

// 判断如果是OC文件才引入这些宏, 如果是普通C语言文件则不引入。否则当在项目中添加C语言文件时报错。

#ifdef __OBJC__

 

#define Name @"Steve"

 

#ifdef DEBUG

#define SteveZLog(...) NSLog(__VA_ARGS__)

#else

#define SteveZLog(...)

 

#endif

#endif

 

#endif /* PrefixHeader_pch */

免责声明:文章转载自《PCH文件的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MUI功能列表css处理超出文本截断问题的两种情况(多行或者单行)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Quartz定时任务

Quartz是一个任务调度框架。石英是来做这种事情的。你可以给它一个触发条件的定义。它负责触发相应的作业在该时间点工作。JobDetail&Job:JobDetail定义任务数据,而真正的执行逻辑在作业中,例如HelloQuartz。在2.x之后,QuartzAPIQuartz的API采用DSL样式,即示例中的newTrigger()部分。...

使用AutoHotKey提升工作效率

打开网站并按TAB键,直到到达输入字段并计算点击次数。使用以下代码将“名字”、“中间名”、“姓氏”和其他两个ID放入Web表单。...

Element UI 弹窗(Dialog)改成自适应高度,仅body内容部分滚动

定义样式如下:.abow_dialog{display:flex;justify-content:center;align-items:Center;overflow:hidden;.el-dialog{margin:0auto!important;height:90%;overflow:hidden;.el-dialog__body{position:ab...

用arduino做一个智能垃圾桶

这些天我几乎很忙。我有一些时间继续打扰我的arduino。上一次我从TB购买arduino套件时,有一个人体热能感应模块,用于感应人体接近信号。今天我们用这个做一个简单的智能垃圾桶。要实现的功能是:当有人靠近时,垃圾可以自动打开盖子,当人离开时,盖子可以自动关闭。1、 所需材料和工具:1 Arduino SCM我使用Arduino Nano 2人体热能传感模...

JavaScript算法学习:获取字符串最后一位方法及判断是否以指定字符串开始或结尾

Str.substr,其中start是必需的参数,表示坐标的起始位置。正值在正方向计数,负值在反方向计数,长度是可选参数,表示从起始位置开始计数的数字。...

ClickHouse之访问权限控制

Ck当前只有select和insert。这是我刚才提到的:60cd41aedc4e47e8883682b416109e7b7e345e15ecc63c2c98ecdab5e8e053a只读defaultdefault此部分意味着添加具有只读权限的dba用户。允许访问的数据库是默认值。源IP不受限制::/0尝试以dba用户身份登录:clickhouse-cli...