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
浙公网安备 33010602011771号