iOS打印Debug日志的方式
2015-06-15 17:29
239 查看
转自:http://blog.csdn.net/lixuwen521/article/details/7675836
简单介绍以下几个宏:
1) __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉,否则会编译出错。
2) __FILE__ 宏在预编译时会替换成当前的源文件名
3) __LINE__宏在预编译时会替换成当前的行号
4) __FUNCTION__宏在预编译时会替换成当前的函数名称
1.重新定义系统的NSLog,__OPTIMIZE__ 是release 默认会加的宏
[plain] view
plaincopy
#ifndef __OPTIMIZE__
#define NSLog(...) NSLog(__VA_ARGS__)
#else
#define NSLog(...){}
#endif
2.直接自己写#define,当release版本的时候把#define 注释掉即可
#define IOS_DEBUG
[plain] view
plaincopy
#ifdef IOS_DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#endif
3.
[plain] view
plaincopy
#ifdef DEBUG
# define DLog(format, ...) NSLog((@"[文件名:%s]" "[函数名:%s]" "[行号:%d]" format), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...);
#endif
这种方式需要修改项目的配置,使得在debug编译的时候,编译DLog的宏,产生详细的日志信息,而release的时候,不产生任何控制台输出
相比而言,还是第一种比较方便
简单介绍以下几个宏:
1) __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉,否则会编译出错。
2) __FILE__ 宏在预编译时会替换成当前的源文件名
3) __LINE__宏在预编译时会替换成当前的行号
4) __FUNCTION__宏在预编译时会替换成当前的函数名称
1.重新定义系统的NSLog,__OPTIMIZE__ 是release 默认会加的宏
[plain] view
plaincopy
#ifndef __OPTIMIZE__
#define NSLog(...) NSLog(__VA_ARGS__)
#else
#define NSLog(...){}
#endif
2.直接自己写#define,当release版本的时候把#define 注释掉即可
#define IOS_DEBUG
[plain] view
plaincopy
#ifdef IOS_DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#endif
3.
[plain] view
plaincopy
#ifdef DEBUG
# define DLog(format, ...) NSLog((@"[文件名:%s]" "[函数名:%s]" "[行号:%d]" format), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...);
#endif
这种方式需要修改项目的配置,使得在debug编译的时候,编译DLog的宏,产生详细的日志信息,而release的时候,不产生任何控制台输出
相比而言,还是第一种比较方便
相关文章推荐
- 【iOS开发】企业版证书($299)In-House方式发布指南
- iOS5.0新功能之——NSJSONSerialization解析JSON数据
- iOS——获得键盘的高度 NSNotificationCenter 避免遮挡输入框
- 1 课务 iOS 概述
- iOS开发,Reveal的使用
- 主题 : sizeWithFont iOS 7.0 新方法的写法
- ios之TableViewCell重用机制避免重复显示问题
- IOS开发—视图控制器左边缘右滑pop出栈
- iOS国际化
- iOS-AVAudioRecorder、EMCDDeviceManager 报错解决方法
- 集成支付宝IOS
- IOS开发—通过ChildViewController实现view的切换
- iOS每日一记 ------之正则表达式 判断手机号 限制textfiled的长度
- iOS 后台保持长连接
- IOS中NSUserDefaults的用法(轻量级本地数据存储)
- iOS唯一标示符引导
- IOS LocationManager定位国内偏移,火星坐标(GCJ-02)解决方法
- iOS本地闹钟提醒实现
- IOS用正则验证手机号
- iOS--通过runtime完成归档,反归档