Release发布log屏蔽方法
来源:互联网 发布:linux 核 绑定 编辑:程序博客网 时间:2024/05/21 17:36
在开发过程中一般会用到NSLog(<#NSString *format, ...#>)来获得具体的信息。
但当我们发布app时,一步一步的去找NSLog(<#NSString *format, ...#>),并屏蔽掉,这样比较浪费时间还很累。我们可以采用预编译的方式来简化这个问题。
在***-Prefix.pch里面添加
#define DEBUG_MODE
#ifdef DEBUG_MODE
#define DebugLog( s, ... ) NSLog( @"<%@:(%d)> %@", [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
#define DebugLog( s, ... )
#endif
这样当我们需要打印log时采用DebugLog( s, ... ),就可以了。如果我们需要打release版本就直接注销掉#define DEBUG_MODE,就可以了。
转自:http://heidianfeng.blog.163.com/blog/static/61843456201261253224559/
这里有几个宏 ##__VA_ARGS__, __FILE__, __LINE__ 和__FUNCTION__,下面介绍一下:
1) __VA_ARGS__ 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错, 你可以试试。
2) __FILE__ 宏在预编译时会替换成当前的源文件名
3) __LINE__宏在预编译时会替换成当前的行号
4) __FUNCTION__宏在预编译时会替换成当前的函数名称
1) __VA_ARGS__ 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错, 你可以试试。
2) __FILE__ 宏在预编译时会替换成当前的源文件名
3) __LINE__宏在预编译时会替换成当前的行号
4) __FUNCTION__宏在预编译时会替换成当前的函数名称
举个例子特别说明一下...和__VA_ARGS__
实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个点)。这样预定义宏_ _VA_ARGS_ _就可以被用在替换部分中,替换省略号所代表的字符串。比如:
#define PR(...) printf(__VA_ARGS__)
int main()
{
int wt=1,sp=2;
PR("hello\n");
PR("weight = %d, shipping = %d",wt,sp);
return 0;
}
输出结果:
hello
weight = 1, shipping = 2
省略号只能代替最后面的宏参数。
#define W(x,...,y)错误!
实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个点)。这样预定义宏_ _VA_ARGS_ _就可以被用在替换部分中,替换省略号所代表的字符串。比如:
#define PR(...) printf(__VA_ARGS__)
int main()
{
int wt=1,sp=2;
PR("hello\n");
PR("weight = %d, shipping = %d",wt,sp);
return 0;
}
输出结果:
hello
weight = 1, shipping = 2
省略号只能代替最后面的宏参数。
#define W(x,...,y)错误!
- Release发布log屏蔽方法
- iOS开发debug跟release版本log屏蔽方法
- iOS开发debug跟release版本log屏蔽方法
- iOS开发debug跟release版本log屏蔽方法
- NSlog在release模式下屏蔽log信息
- 在release(发布app)中屏蔽NSLog输出语句
- iOS 在Debug下显示log,在Release下屏蔽log输出
- iOS开发:Debug与Release版本NSLog屏蔽方法
- iOS开发:Debug与Release版本NSLog屏蔽方法
- iOS开发debug跟release版本NSLog屏蔽方法
- iOS开发debug跟release版本NSLog屏蔽方法
- ios 在release时屏蔽掉NSlog()的几个方法
- iOS开发debug跟release版本NSLog屏蔽方法
- 生成Release版本时不需要进行任何更改即可屏蔽所有的Log输出
- Unity3D研究院之在发布版本屏蔽Debug.log输出的Log
- 众多Log的输出信息快速屏蔽的方法
- 在发布(Release)版本中屏蔽掉代码中的NSLog输出
- Android中Release版本去掉Log的方法
- Android超级课程表实现原理
- linux 内核与用户空间通信之netlink使用方法
- Qt中QTableWidget用法总结
- 加载对话框背景图片,代码如下,可是为什么对话框最大化之后,会有重叠?
- 嵌入式经典面试题
- Release发布log屏蔽方法
- Java Socket编程笔记
- qt之QTableWidget简单用法小结
- retval =HeapFree(_crtheap, 0, pBlock);异常断点
- TCP连接建立与关闭
- hdu 2254 奥运 矩阵求路径方案数
- 【免费资料分享】网上赚钱有几招?——网赚方法集锦
- 程序设计原理中关于算法
- 程序员面试什么最重要?