宏定义重写NSLog

只需要 在ProjectName_Prefix.pch 中追加你对应的宏定义,不用import 就可以直接使用了。

#define DEBUG

//宏输出函数

#ifdef DEBUG

#define SFun_Log(fmt, ...) NSLog((@"%s," "[lineNum:%d]" fmt) , __FUNCTION__, __LINE__, ##__VA_ARGS__); //带函数名和行数

#define SL_Log(fmt, ...) NSLog((@"===[lineNum:%d]" fmt), __LINE__, ##__VA_ARGS__);  //带行数

#define SC_Log(fmt, ...) NSLog((fmt), ##__VA_ARGS__); //不带函数名和行数

#else

#define SFun_Log(fmt, ...)

#define SL_Log(fmt, ...)

#define SC_Log(fmt, ...)

#endif

 只需要在Product ->Scheme->Edit Scheme ->info选择,是release ,还是debug版本即可。如果debug 版本,则答应log,若release版本则不打印。

  release 是发行版本,比debug版本要小一些,他们调用两个不同底层库,debug 包含的信息多,可以断点调试,单步执行,使用使用TRACE/ASSERT等调试输出语句,
但是release 版本不包含调试信息,运行速度比较快。
另外在此处设置的DEBUG 参数可以在下面的路径进行设置:工程->Target->Build Setting ->Preprocessor Macros。默认系统已经给出了DEBUG的参数。如果要增加新的参数,则在哪里进行增加

——FILE——宏在预编译时,会替换成当前的源文件名字

——LINE——替换成当前的行号

——FUNCTION——替换成当前的函数的名称

——VA—ARGS——可变参数的宏,宏前面加上##作用在于:当当可变参数的个数为0 的时候,这里的##起到把前面多余的,去掉的作用。否则编译出错。

原文地址:https://www.cnblogs.com/Jordandan/p/4747343.html