iOS打印Debug日志的方式
2015-12-31 14:40
281 查看
简单介绍以下几个宏:
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 程序判断是否第一次启动
- 欢迎使用CSDN-markdown编辑器
- IOSView翻转扭矩位移
- 创建ios界面的三步骤
- iOS深入学习(使用CocoaPods进行第三方资源管理)
- 类的声明和对象的创建
- iOS解决呼出键盘遮挡页面问题(装逼模式一)
- iOS 判断是否为数字
- iOS -手机号的判断
- iOS图片处理(一)调用系统相机和相册获取图片,给相机添加自定义覆盖物
- iOS 之邮箱判断
- iOS - 16进制色值转化为RGB
- 【iOS笔记】Xcode的基本操作与配置
- ios单例
- IOS SDK详解之拍照/相册(默认+自定义拍照界面)
- iOS - 身份证号判断
- iOS MD5 加密算法
- iOS深入学习(再谈block)
- IOS开发之----两种保存用户名和密码实现记住密码库
- iOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详解