当我们提交代码后者程序上线的时候会遇到这样的问题,删除程序调试阶段的 NSLog代码,如果我一行一行的删除的话,可以在搜索栏里找到所有的 NSLog 关键字,一个一个删除,但是这样有失"尊严",一起工作的小伙伴儿经常有这种情况发生~现在我把我自己的方法和结合网上一些优秀的程序猿的方法结合一下给大家分享一下:
- 创建 PCH 文件(预编译文件)
-
command + N 创建一个预编译文件:点击次序依次为: iOS-->Other-->PCH File
2.左侧"主 bundle" 栏会出现如下文件:
在 PCH 文件中键入内容如下所示:
具体要谢谢的内容和注释我都一一写清楚,希望大家都能看懂!
- 此时打印发现原来的 NSLog 变色了,变成了宏定义的颜色:
- command + R 运行发现仍然能够打印出hello world:
当代吗不在处于 debug 阶段,变成 release 时候:
- 操作步骤如下所示:
2.选择第一项:Edit Scheme
3.Debug 模式切换为 Release模式:
此时我们再次运行 command + R 发现调试区没有打印内容!这就是NSLog 的简单实用技巧!
下面这幅图是我在网上查到的一位iOS老师使用的 NSLog 的高级使用技巧!请看图-->个人觉得非常方便,所以分享给大家!
本图的前提是你先要回到 Edit Scheme 里把 Release 切换回 Debug 模式:
最后我把 NSLog 调试中的 PCH 文件中的代码复制下来分享给大家:
//保证 ifdef 中的宏定义只会在 OC 代码中被引用;
//否则一旦引入 C 或者 C++ 代码或者框架就会出错!
#ifdef __OBJC__
//只在开发中用:
#ifdef DEBUG
//定义 NSLog(__VA_AGRS__):
//#define NSLog(...) NSLog(__VA_ARGS__)
#define NSLog(fmt, ...) NSLog((@"%s [Line %d]" fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
//如果在非 DEBUG 情况下:
#else
//NSLog(...)后面不跟任何内容,在非 DEBUG 情况下(提交上线发布时)该 NSLog(...)自动失效!
#define NSLog(...)
//结束"ifdef DEBUG",有 以 ifdef 开始就要有 endif 结束!就酱!
#endif
//结束"ifdef __OBJC__",有 以 ifdef 开始就要有 endif 结束!就酱!
#endif