iOS开发之使用代码定位性更高的Log

关于Log,打印当前函数无非就是_cmd, __func__, __FUNCTION__, __PRETTY_FUNCTION__,在Xcode中_cmd会返回一个SEL对象,

而剩下的都是来自C/C++编译器的定义所以都会返回一个C的字符串,,显示结果也都差不多,可能不同编译器会有小小的差别。

显然后面__func__系列要比_cmd好用,相对Objective-C类型内的方法调用,

他不仅会显示方法名,还会显示类型,配合__LINE__,可以精确定位出Log在代码中的位置。

比如这样:

@implementation MyClass+ (void)doo{//__func__, __FUNCTION__, __PRETTY_FUNCTION__都差不多, __func__, __LINE__);}@end

会输出:

Method: +[MyClass doo], Line: 16.

我们还可以定义一些宏来快速在NSLog或者其他Log框架中来使用,比如这样:

#define FUNCINF [NSString stringWithFormat:@"M:%s, L:%d.", __func__, __LINE__]#define PFUNCINF(x) @"%@|%@", FUNCINF, x#define PPFUNCINF(x1, x2) @"%@|%@|%@", FUNCINF, x1, x2#define PPPFUNCINF(x1, x2, x3) @));));));//直接用在Cocoa Lumberjack的Log中

输出Log(M代表方法名称,L代表行数):

M:-[AppDelegate applicationDidFinishLaunching:], L:60.|开始操作M:-[AppDelegate applicationDidFinishLaunching:], L:61.|操作1|123M:-[AppDelegate applicationDidFinishLaunching:], L:62.|操作2|子操作1|结果1M:-[AppDelegate applicationDidFinishLaunching:], L:64.|操作3|错误1

版权声明:本文为博主原创文章,未经博主允许不得转载。

大多数人想要改造这个世界,但却罕有人想改造自己。

iOS开发之使用代码定位性更高的Log

相关文章:

你感兴趣的文章:

标签云: