生成Release版本时不需要进行任何更改即可屏蔽所有的Log输出
2014-03-10 18:26
99 查看
今天在这里分享一个很实用的小技巧。 我们平时在开发应用的时候,经常会用到NSLog来调试我们的程序,而随着项目越来越大,这些用于调试的日志输出就会变得很难管理。 我们在发布正式版的时候一定要屏蔽掉所有后台输出,因为这些输出还是比较消耗系统资源的。 往往到了这个时候,我们不得不去一行一行的找到NSLog调用,然后注释掉。 这样做在项目小的时候还比较有效,但随着项目规模的增长,就会变得越来越难控制。 下面就给大家介绍一个简单的方法,让我们在生成Release版本时不需要进行任何更改即可屏蔽所有的Log输出。
1. 首先我们先要定义这样一段预处理命令,文件名随便起,例如 CLog.h
这里我们判断DEBUG这个宏是否定义,如果有定义我们就将这个CLog宏替换成NSLog调用,而如果没有定义过DEBUG标志我们就直接跳过。这点应该不难理解。
2. 检查DEBUG标志是否正确定义,xcode一般会在debug运行配置项里面已经定义号了DEBUG标志,如果没定义我们就自己写上,以我的xcode 4 为例,如下图:
找到PreProcessor Macros 这个属性,对于Debug配置我们给他写上DEBUG,而在Release配置中把它留空。 这样我们刚才那段预处理命令就可以根据这个标志来判断我们编译的时调试版本还是发布版本,从而控制NSLog的输出。 (因为xcode 4 会把debug/release 两个配置项同时对比展现出来,而3.x版本的只能分别设置, 如果你用的时xcode 3.x 开发工具, 那么就分别对Debug/Release 都检查一下)。
3. 到了这里我们这个判断工作就都进行完了,不过这里还有一点比较麻烦,就是我们如果想实用CLog宏,就必须要导入 CLog.h 这个头文件。 不过xcode为我们提供了一种非常巧妙的解决办法。 我们自己看一下项目里的文件,是不是有一个叫做 xxx-prefix.pch 的文件,只要注意到pch这个扩展名就可以了。 这个文件是做什么用的呢? 下面是一个pch文件的样本:
这里引入了一些头文件, 其实是xcode 的一种预编译机制,我们在编译一个项目的时候,会有很多常用的源文件,并且这些代码文件几乎不被修改,所以xcode对这些文件只在早期进行一次编译,以便我们以后的多次构建过程中反复实用。 例如这里的UIKit和Foundation ,这样的机制可以加快我们每次构建项目的速度。 当然这里我们不必太深究它,知道它的作用后,我们就可以利用它来为我们的开发提供便利。 我们只需要将刚刚建立的CLog.h 也在这里面引入一下,这样我们项目中的所有文件就都能够访问到我们刚刚定义的CLog宏了。
下面是完成后的pch文件:
这样,我们的CLog就完成了,现在可以在任何一个源文件中实用CLog宏来输出日志,预处理命令会自动判断当前的编译配置,如果是Debug,就会输出日志,反之则什么都不会输出。
1. 首先我们先要定义这样一段预处理命令,文件名随便起,例如 CLog.h
2. 检查DEBUG标志是否正确定义,xcode一般会在debug运行配置项里面已经定义号了DEBUG标志,如果没定义我们就自己写上,以我的xcode 4 为例,如下图:
找到PreProcessor Macros 这个属性,对于Debug配置我们给他写上DEBUG,而在Release配置中把它留空。 这样我们刚才那段预处理命令就可以根据这个标志来判断我们编译的时调试版本还是发布版本,从而控制NSLog的输出。 (因为xcode 4 会把debug/release 两个配置项同时对比展现出来,而3.x版本的只能分别设置, 如果你用的时xcode 3.x 开发工具, 那么就分别对Debug/Release 都检查一下)。
3. 到了这里我们这个判断工作就都进行完了,不过这里还有一点比较麻烦,就是我们如果想实用CLog宏,就必须要导入 CLog.h 这个头文件。 不过xcode为我们提供了一种非常巧妙的解决办法。 我们自己看一下项目里的文件,是不是有一个叫做 xxx-prefix.pch 的文件,只要注意到pch这个扩展名就可以了。 这个文件是做什么用的呢? 下面是一个pch文件的样本:
下面是完成后的pch文件:
相关文章推荐
- ASP.net在页面所有内容生成后、输出内容前对页面内容进行操作
- 转 iOS开发debug跟release版本log屏蔽方法
- ASP.net在页面所有内容生成后、输出内容前对页面内容进行操作
- 打印如下图案:要求,通过输入不同的参数(比如1、2、3、4...N)该图案可以90°*N的倍数进行顺时针旋转。不需要图形化界面,在控制台中输出即可。注意:图中的“I”为占位符,真实的图形不应该有此符号
- 在Module中使用自定义过滤器,来统一对站内所有请求响应的输出内容进行采集或更改。
- 打印如下图案:要求,通过输入不同的参数(比如1、2、3、4...N)该图案可以90°*N的倍数进行顺时针旋转。不需要图形化界面,在控制台中输出即可。注意:图中的“I”为占位符,真实的图形不应该有此符号
- .net实例:ASP.net在页面所有内容生成后、输出内容前对页面内容进行操作
- ASP.net在页面所有内容生成后、输出内容前对页面内容进行操作
- 在发布(Release)版本中屏蔽掉代码中的NSLog输出
- iOS 在Debug下显示log,在Release下屏蔽log输出
- ASP.net在页面所有内容生成后、输出内容前对页面内容进行操作
- ASP.net在页面所有内容生成后、输出内容前对页面内容进行操作
- Android中Log.d和Log.v如何实现在release版本不输出
- Android 如何统一管理log日志,在发布版本时不输出任何日志信息。
- Unity3D研究院之在发布版本屏蔽Debug.log输出的Log
- iOS开发debug跟release版本log屏蔽方法
- xcode 怎么样在发布release版本的时候 不输出log
- ASP.net在页面所有内容生成后、输出内容前对页面内容进行操作
- iOS开发debug跟release版本log屏蔽方法
- Android Java / Kotlin 程序员开发调试工具。Debug Bottle 的所有功能均建立在 App 的 debug 版本中,不会对 release 版本产生任何影响。Debug Bo