开发过程中,我们需要在编译的时候打印数据测试,而在发布时我们却不需要做这些几乎无用操作(不排除其他需求),所以可以通过如下操作来处理:在Debug模式下打印,Release模式下不做处理。
实现:
#ifdef DEBUG
#define NSLog(fmt, ...) NSLog((@"%s, [Line:%d] " fmt), __func__, __LINE__, ##__VA_ARGS__ )
#else
#define NSLog(...)
#endif
提示:不用 DEBUG 条件也可以自己设置。 在Build Settings中 搜索 "macro" ,到 Apple Clang - Preprocessing -> Preprocessor Macros 中设置。
图示.png
部分参数解释:
__func__ :打印当前函数名。
__LINE__:打印当前行号。
__VA_ARGS__:可变参数宏,实现思想就是在宏定义中参数列表的最后一个参数为省略号(即三个点)
##__VA_ARGS__ :可变参数宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错
参考:https://blog.csdn.net/q2519008/article/details/80934815
https://blog.csdn.net/wwwang89123/article/details/17436577











网友评论