IOS项目打包除去NSLog和NSAssert处理之阿堂教程
来源:互联网 发布:国信炒股软件 编辑:程序博客网 时间:2024/06/05 15:04
使用过ios开发的网友都知道,我们使用NSLog和NSAssert的目的是为了调试,并在调试阶段输出一些信息,但是在调试结束,应用发布后,如果还使用NSLog和NSAssert输出信息,那样会影响性能。事实上,这个工作量比较大,而且刚刚移除掉时,你会发现又要进行调试,然后再把NSLog和NSAssert加入到程序中,很麻烦!
从上图中,我们选择new scheme菜单项,接着会弹出一个对话框,从中选择target为 PresentationLayer,如下图所示
然后点击ok按钮就创建成功了,这样刚创建好的scheme为PresentationLayer2。
此时再选择edit scheme菜单项编辑 PresentationLayer2.如下图,选择info标签,将build configuration(编辑配置)修改为release。这里说明下编译配置各个项的含义: debug是为调试编译而配置的,release 是为了发布编译而配置的。
由于我们需要为不同的scheme配置不同的参数。由于移除NSLog和NSAssert的方式不同,所以下面我们分别介绍一下它们。
一. 移除NSAssert
移除NSAssert比较简单,我们需要在target中选择build settings, 找到 preprocessor macros(预处理宏)项目,配置它的release为 NS_BLOCK_ASSERTIONS, 具体操作步骤为: 双击release的空白处,此时会弹出对话框,点击对话框中的+添加NS_BLOCK_ASSERTIONS,如下图。
NS_BLOCK_ASSERTIONS是foundation框架中定义好的预处理宏,如果在编译环境中设置NS_BLOCK_ASSERTIONS,在编译的时候nsassert宏将被移除,我们可以分别运行scheme中的
PresentationLayer-->iPhone 6.0 Simulator 和
PresentationLayer2-->iPhone 6.0 Simulator
进行测试。
比较测试结果,可以发现PresentationLayer会抛出异常,而 PresentationLayer2可以执行通过。
结果如下图
二. 移除NSlog
移除NSLog 比NSAssert复杂一些,需要修改代码。思路是重新定义一个宏替代NSLog,这个宏是有条件编译的。为了能够在工程所有源代码中使用这个宏,需要在<工程名>-Prefix.pch文件中定义这个宏。这个文件引入的.h文件和定义的宏作用于全部工程中的源代码模块,这样可以省去在每个.h文件中定义宏。打开 PresentationLayer工程中的PresentationLayer-Prefix.pch,添加定义新的日志宏
#ifdef DEBUG
#
#else
#
#endif
编译器在编译的时候判断是否定义DEBUG,如果定义了,则使用DLog替代NSLog。
#ifdef...#else...#endif是条件编译语句,是在编译的时候编译器进行判断。
与移除nsassert类似,需要在target中选择build settings,找到Preprocessor Macros项目,配置它的Debug 为DEBUG或(DEBUG=1),如下图
我们可以分别运行scheme中的
PresentationLayer-->iPhone 6.0 Simulator 和
PresentationLayer2-->iPhone 6.0 Simulator
进行测试,可以发现PresentationLayer执行时会有日志输出,而 PresentationLayer2则没有。
0 0
- IOS项目打包除去NSLog和NSAssert处理之阿堂教程
- IOS项目打包除去NSLog和NSAssert处理
- IOS项目打包除去NSLog
- 过滤NSLog和NSAssert
- IOS移除NSAssert& NSLog
- IOS开发之NSAssert
- iOS之断言NSAssert
- iOS学习笔记68-IOS移除NSAssert& NSLog
- NSAssert 1 vs NSLog
- IOS项目去除NSLog
- iOS NSAssert
- ios NSAssert()
- 如何处理上线项目NSLog
- iOS objective-c之-7:NSAssert
- iOS 之NSLog屏蔽输出
- iOS开发中常用到的处理异常的宏 NSAssert()
- ios打包测试上架----之----上架教程
- IOS开发教程--NSLog输出格式控制
- centos6.5(i386) 安装Foreman
- c++基础学习1-c的升级c++
- iOS开发知识点装逼1:理解assign,copy,retain变strong
- CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\Framework\.。。”--“拒绝访问
- debian6下redis+keepalived故障自动切换
- IOS项目打包除去NSLog和NSAssert处理之阿堂教程
- ORACLE常见问题总结ing
- 智和信通SugarNMS无线微波网管解决方案
- MVC笔记
- pageContext,request,session,application的使用及区别
- oracle学习 用户命令相接
- python的日志logging模块使用总结
- php对xml进行简单的增删改查(CRUD)操作
- 设计模式与足球