PCH 文件简单使用与自定义NSLog

来源:互联网 发布:淘宝箱包类目 编辑:程序博客网 时间:2024/06/06 08:36

pch文件作用

pch文件就是一个头文件,可以被项目中的其他所有源文件共享和访问。正是因为pch文件这个特有的属性,所以当有一个宏,在很多文件都需要用到的时候,就是我们用pch文件的时候了。
pch作用:
1、 放一些全局的宏;
2、导入一些全局都需要的头文件,一般会放一些工具类的头文件,或者分类头文件等;
3、管理日志输出。

ps:为什么要管理日志输出?
在写代码的时候,很多的时候会用NSlog去输出看获取的数据、和内存地址等等。日志输出非常耗性能,在开发调试的时候输出没关系,但是发布的时候再输出就不对了,影响用户体验。而且我们不能一个个去找NSLog,然后屏蔽。
所以自定义日志输出,在发布的时候,调成release 版本,日志输出不打印任何内容,就不会消耗性能。


下面来说下如何使用PCH文件。
一、首先先创建 pch 文件,如下图
图1
图2
( 注意:创建pch 文件的时候,pch 命名一般和我们项目的名称保持一致 )

二、更改配置
创建完 pch 文件后,我们发现这个 pch 是不好使的,需要修改一些配置才好使。
点击我们的工程,选择 Build Setting –>在输入框输入 prefix –> 找到 Precompile Prefix Header 和 Prefix Header,做相应的修改,如下图:
图3

Precompile Prefix Header这个选项的意思是,是否允许提前编译头文件,系统默认为 NO,这里改为YES;
Prefix Header 这个意思是让我们把创建的 pch 文件路径添加上。
怎么添加路径呢,右键点击我们的 pch 文件,选择 show in finder,如下图:
图4

我们只需要找到 pch 文件上一级的目录就可以,苹果会帮我们找到根目录添加上,不需要我们去做。
所以,pch 文件的目录就是 PCHLearnTests/PCHLearn.pch (上一级目录/pch文件全名),如下图:
图5
这样 pch 的配置就完成了,现在就可以正常使用 pch 文件了。


使用 pch 文件的一些小事项,如果有C文件,添加到pch文件里会报错,所以我们一般都会用

ifdef __OBJC__#define Height 10#import "UIImage+Image.h"endif

来判断,OC 的话,就在这里导入。
Xcode在每个OC 文件中都定义了这个宏,也就意味着只有OC中的文件才拥有这些宏,避免项目中有C文件的时候,报错。


最后来说下自定义输出,直接看代码就ok

//不要在意 __VA_ARGS__ 这个,这是系统默认的,我们这么写就会和系统的 NSLog 拥有相同的日志输出功能#ifdef DEBUG // 调试#define XWBLog(...)  NSLog(__VA_ARGS__)#else // 发布#define XWBLog(...)#endif

做判断,如果是Debug 的时候,我们就打印日志,如果是 release 版本,就不打印日志,不需要去找到输出屏蔽了。

ps: Debug 版本(开发调试版本) Release 版本(发布版本,即用户使用版本) ,Debug版 改为 Release版,如下图:
这里写图片描述
这里写图片描述
将 Debug 改为 Release 即可。

最后,把整体的代码放上,谢谢

// __OBJC__每个OC文件都会自动定义这个宏#ifdef __OBJC__// pch原理:pch里面的内容被项目中的所有文件共有,实际上就是将头文件在每个源文件中添加上// pch作用:// 1.存放一些公用的宏#define Height 10// 2.存放一些公用的头文件#import "UIImage+Image.h"// 3.自定义Log(输出日志)// ...标示在宏里面的可变参数// __VA_ARGS__ 标示函数里面的可变参数#ifdef DEBUG // 调试#define XWBLog(...)  NSLog(__VA_ARGS__)#else // 发布#define XWBLog(...)#endif#endif