pch作用

Posted on 2016-05-27 20:38  柠檬片  阅读(331)  评论(0)    收藏  举报

pch文件:也是一个头文件,能被项目中的其他所有源文件共享和访问。

  • 为什么要搞个pch文件,提需求:如果一个宏,很多文件都需要用 到,怎么解决,搞个公用的头文件,同时导入这个头文件。
  • X5之前,项目的Supporting files文件夹下面有个“工程名-Prefix.pch”文件,也是一个头文件

1.使用前配置:

  pch需要提前编译,所以先电击项目,然后找到Build Settings,可搜索prefix找到,如下图,  

                                          

注意路径前后不要有空格,否则会报错。

                            

2.pch作用:

  •  放一些全局的宏
  • 导入一些全局都需要的头文件,一般开发中放工具类的头文件, 或者分类头文件等。
  • 管理日志输出

为什么要管理日志输出,因为日志输出非常耗性能,一般发布的时候不需要日志输出,只有调试的时候才需要。

3. 通常开发中弄一个自己的日志输出,不要系统自带的NSLog

#define YSLog(...) NSLog(__VA_ARGS__)

...表示能接收任何参数

__VA_ARGS__ 表示左边...的参数会替代到右边NSLog中。

  • 如果不想打印了,直接注释后边的 #define YSLog(...) // NSLog(__VA_ARGS__)
  • 还可以通过一个宏进行条件编译,在调试阶段,xcode会自动定 义一个DEBUG宏,利用这个宏,就能进行条件编译. 

4. 在pch写的有关OC的东西,最好放在#ifdef __OBJC__,Xcode在每个OC文 件中都定义了这个宏,也就意味着只有OC中的文件才拥有这些宏,避免 项目中有C文件的时候,报错。

5. 如果在c文件中,使用#import,就会报错,因为c文件不能识别#import, 只有OC文件才能识别。在pch中的东西能被项目中的所有文件共享,c文 件共享#import就报错。

 1 // pch注意点: 1.pch需要提前编译  2.需要做一些判断,判断下当前有没有c文件,如果有c,就不导入OC的语法
 2 
 3 // __OBJC__每个OC文件都会自动定义这个宏
 4 
 5 #ifdef __OBJC__
 6 
 7     // pch原理:pch里面的内容被项目中的所有文件共有.
 8 
 9     // pch作用:
10     // 1.存放一些公用的宏
11     #define ABC 10
12 
13 
14 
15 
16     // 2.存放一些公用的头文件
17     #import "UIImage+Image.h"
18 
19 
20 
21 
22     // 3.自定义Log(输出日志)
23 
24     // ...标示在宏里面的可变参数
25     // __VA_ARGS__ 标示函数里面的可变参数
26 
27     #ifdef DEBUG // 调试
28 
29         #define BYLog(...)  NSLog(__VA_ARGS__)
30 
31 
32     #else // 发布
33 
34         #define BYLog(...)
35 
36     #endif
37 
38 
39 #endif
PCH