pch文件的使用
pch文件的应用场景:
1.用来定义一些全局的宏
2.用来导入一些全局都能访问的头文件(如果只需要让.m或者.mm文件访问到,不需要让.c文件访问到,那么需要把头文件写到#ifdef _OBJC_ #endif之间,因为.m和.mm文件默认有一个_OBJC_的宏而.c文件没有)。
3.用来自定义log
pch文件的内容可以被所有的文件访问到,包括.c、.m、.mm文件。默认.m、.mm文件有一个#define _OBJC_的宏,而.c文件没有该宏,所以可以把需要.m、.mm访问到而不需.c文件访问到的.h头文件放到pch文件的这个宏内,把.c文件需要访问的放到pch文件的这个宏外。
1.——————————————————
#define _GLOBAL_
2.——————————————————
#ifdef _OBJC_
#import “ws.h”
#endif
3.——————————————————
为了调试方便,调试阶段往往会用NSLog()来打印输出信息,以查看信息程序运行是否正确
但是,发布阶段往往不需要输出这些调试信息,手动注释或者删除NSLog()会比较麻烦,所以可以采用以下方法来操作:
在pch文件的
#ifdef _OBJC_
#endif
之间添加
#define WSLog(…) NSLog(__VA_ARGS__)
// 调试阶段: #ifdef _OBJC_ #define WSLog(…) NSLog(__VA_ARGS__) #endif // 发布阶段: #ifdef _OBJC_ #define WSLog(…) //NSLog(__VA_ARGS__) #endif
或者更智能的写法:
#ifdef _OBJC_ #ifdef DEBUG // 调试阶段 #define WSLog(…) NSLog(__VA_ARGS__) #else // 发布阶段 #define WSLog(…) #endif #endif
项目中需要设置pch的相对路径:
点击项目->building setting->搜索Prefix Header->输入pch文件在项目中的相对路径,如下图:
注意:不是设置绝对路径:/Users/用户名/Desktop/WeChat/WeChat/PrefixHeader.pch
需要设置的正确的pch文件的路径:WeChat/PrefixHeader.pch