iOS开发之使用代码定位性更高的Log
2015-07-01 19:40
597 查看
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^
我要捐赠: 点击捐赠Cocos2d-X源码下载:点我传送游戏官方下载:http://dwz.cn/RwTjl游戏视频预览:http://dwz.cn/RzHHd游戏开发博客:http://dwz.cn/RzJzI游戏源码传送:http://dwz.cn/Nret1
关于Log,打印当前函数无非就是_cmd, __func__, __FUNCTION__, __PRETTY_FUNCTION__,在Xcode中_cmd会返回一个SEL对象,
而剩下的都是来自C/C++编译器的定义所以都会返回一个C的字符串,显示结果也都差不多,可能不同编译器会有小小的差别。
显然后面__func__系列要比_cmd好用,相对Objective-C类型内的方法调用,
他不仅会显示方法名,还会显示类型,配合__LINE__,可以精确定位出Log在代码中的位置。
比如这样:
Method: +[MyClass doo], Line: 16. 我们还可以定义一些宏来快速在NSLog或者其他Log框架中来使用,比如这样:
举例,假设在AppDelegate的applicationDidFinishLaunching方法中调用如下代码:
分别使用NSLog和Cocoa Lumberjack Log框架的DDLogError(参数和NSLog一样):
M:-[AppDelegate applicationDidFinishLaunching:], L:60.|开始操作
M:-[AppDelegate applicationDidFinishLaunching:], L:61.|操作1|123
M:-[AppDelegate applicationDidFinishLaunching:], L:62.|操作2|子操作1|结果1
M:-[AppDelegate applicationDidFinishLaunching:], L:64.|操作3|错误1
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^
我要捐赠: 点击捐赠Cocos2d-X源码下载:点我传送游戏官方下载:http://dwz.cn/RwTjl游戏视频预览:http://dwz.cn/RzHHd游戏开发博客:http://dwz.cn/RzJzI游戏源码传送:http://dwz.cn/Nret1
我要捐赠: 点击捐赠Cocos2d-X源码下载:点我传送游戏官方下载:http://dwz.cn/RwTjl游戏视频预览:http://dwz.cn/RzHHd游戏开发博客:http://dwz.cn/RzJzI游戏源码传送:http://dwz.cn/Nret1
关于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__都差不多 NSLog(@"Method: %s, Line: %d.", __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) @"%@|%@|%@|%@", FUNCINF, x1, x2, x3
举例,假设在AppDelegate的applicationDidFinishLaunching方法中调用如下代码:
分别使用NSLog和Cocoa Lumberjack Log框架的DDLogError(参数和NSLog一样):
NSLog(PFUNCINF(@"开始操作")); NSLog(PPFUNCINF(@"操作1", @123)); NSLog(PPPFUNCINF(@"操作2", @"子操作1", @"结果1")); //直接用在Cocoa Lumberjack的Log中 DDLogError(PPFUNCINF(@"操作3", @"错误1"));输出Log(M代表方法名称,L代表行数):
M:-[AppDelegate applicationDidFinishLaunching:], L:60.|开始操作
M:-[AppDelegate applicationDidFinishLaunching:], L:61.|操作1|123
M:-[AppDelegate applicationDidFinishLaunching:], L:62.|操作2|子操作1|结果1
M:-[AppDelegate applicationDidFinishLaunching:], L:64.|操作3|错误1
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。如果文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额随意,重在心意^_^
我要捐赠: 点击捐赠Cocos2d-X源码下载:点我传送游戏官方下载:http://dwz.cn/RwTjl游戏视频预览:http://dwz.cn/RzHHd游戏开发博客:http://dwz.cn/RzJzI游戏源码传送:http://dwz.cn/Nret1
相关文章推荐
- C#词法分析器之输入缓冲和代码定位的应用分析
- iOS开发之路--微博“更多”页面
- Objective-C的内省(Introspection)用法小结
- Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect实例分析
- iOS开发之路--微博骨架搭建
- IOS开发代码分享之获取启动画面图片的string
- Objective-C中NSLog输出格式大全
- xcode 4 制作静态库图文详解
- Swift调用Objective-C编写的API实例
- Swift、Objective-C、Cocoa混合编程设置指南
- Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
- 解决 Xcode 6-Beta2 智能提示bug
- Swift调用Objective-C代码
- IOS开发之路--C语言数组和字符串
- IOS开发代码分享之用nstimer实现倒计时功能
- XCode编译速度慢的处理方法
- objective-c中生成随机数的方法
- 在Swift中使用Objective-C编写类、继承Objective-C类
- mac git xcrun error active developer path 错误
- IOS开发代码分享之设置UISearchBar的背景颜色