使用 DEBUG 宏屏蔽调试信息

Posted 芒果味ly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 DEBUG 宏屏蔽调试信息相关的知识,希望对你有一定的参考价值。

ios 开发中我们使用 NSLog(...) 打印日志信息来调试程序,可是 release 的时候,这些调试信息输出就没什么用了,还可能会有一点浪费资源 !因此通过 C 语言的条件预编译来搞定:
#ifdef DEBUG
    #define DebugLog(fmt,...)     NSLog((@"【Function:%s】【LineNum:%d】" fmt),__FUNCTION__,__LINE__,##__VA_ARGS__)
    #define DebugLogInt(num)      DebugLog(@"int value is %d",num)
    #define DebugFileLog(fmt,...) NSLog((@"【File:%s】【Function:%s】【LineNum:%d】" fmt),__FILE__,__FUNCTION__,__LINE__,##__VA_ARGS__)
#elif
    #define DebugLog(format,...)
    #define DebugLogInt(num)
    #define DebugFileLog(format,...)
#endif

把这些单独写到一个头文件里,在 pch 文件中导入它就行了,以后输出 log 直接使用 DebugLog ! 
DEBUG 宏是 xCode 自动增加的,只有 scheme 选择 debug 模式的时候生效,这里正好符合我们的需求,所以我们直接使用就好了;当然了我们也可以添加别的预编译宏。

另外,这些是编译器内置的宏,可以帮助我们定位代码,简单介绍下含义:

__FILE__     :文件名
__FUNCTION__ :方法名
__LINE__     :行号
__VA_ARGS__  :可变参数

有问题可以给我留言哦 O(∩_∩)O哈哈~

以上是关于使用 DEBUG 宏屏蔽调试信息的主要内容,如果未能解决你的问题,请参考以下文章

Debug模式应用程序输出Debug调试信息(现成的宏定义,用于格式化打印信息)

iOS开发debug跟release版本NSLog屏蔽方法

NSLog设置不打印

用宏定义代替printf函数

DEBUG 和Release的区别

可变参数宏(DEBUG)