OC NSLog打印log所在的文件和行数

        开发时在调试过程中我们会打印很多信息用于调试。当打印较多时,我们不知道某个打印的出处,给定位问题带来不便。如果打印信息能带有该打印的文件和行数信息,会很大程度上帮助我们快速的定位问题。

方法:在全局头文件中定义log

代码:

#ifdef DEBUG 

#define NSLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", \

self, \

[[NSString stringWithUTF8String:__FILE__] lastPathComponent], \

__LINE__, \

[NSString stringWithFormat:(s), ##__VA_ARGS__] )

#else

#define NSLog(...)

#endif

详解:

#ifdef DEBUG // 如果在debug模式下

#else // 不在debug模式下

#endif

这是成对出现的,含义及作用和 if...else 基本一样。

 NSLog( @"<%p %@:(%d)> %@", \  

self, \

[[NSString stringWithUTF8String:__FILE__] lastPathComponent], \

__LINE__, \

[NSString stringWithFormat:(s), ##__VA_ARGS__] )

这句代码中的反斜杠表示换行;

%p 表示取内存地址;

__FILE__ 表示文件所在全路径,lastPathComponent 取最后一个部分,也就是打印log的文件的名字;

__LINE__ 表示log所在文件的行数

## 粘合符号,是宏连接符;__VA_ARGS__是可变参数宏,就是你真正要打印的内容,##粘合了前面的信息(内存地址、文件名和行数)。


OC NSLog打印log所在的文件和行数_第1张图片
打印内容

以上。

你可能感兴趣的:(OC NSLog打印log所在的文件和行数)