xcode打release包

xcode打release包,第1张

Xcode默认会有2个编译模式,一个是Debug,一个是Release。Release下不能调试程序,编译时有做编译优化,会比用Debug打包出来的运行快,另外包也会更小。

在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程。但是一个发布的程序,里面带有太多的NSLog输出,肯定对于App性能有所影响,这时候我们可以使用一个宏定义来处理,在开发的时候使用DEBUG模式,在发布的时候使用RELEASE模式。这样,发布的App就不会在程序内部做大量的NSLog输出了。

简单的代码如下,

?

1

2

3

4

#if defined(DEBUG)||defined(_DEBUG)

NSLog(@

"测试代码"

)

NSLog(@

"Test Coding"

)

#endif

上面的#if #endif宏定义的意思就是如果定义了DEBUG,那么就使用NSLog输出;否则这段代码直接忽略。有人会疑问这个DEBUG和_DEBUG来自哪里,这个其实不用担心,这个来自于Xcode的默认设置,我们可以取消DEBUG模式,开启RELEASE发布模式,如下截图所示,

选择Product->Scheme->Edit Scheme,

下图可以选择Debug和Release两种模式,

这里我选择了Release,那么则默认没有定义Debug,则上面代码中#if...#endif之间的输出NSLog不会执行。这样就在发布程序的时候,节省了一些硬件设备的资源。

怎样“调试” Release 版的程序

遇到Debug成功但Release失败,显然是一件很沮丧的事,而且往往无从下手。如果你看了以上的分析,结合错误的具体表现,很快找出了错误,固然很好。但如果一时找不出,以下给出了一些在这种情况下的策略。1. 前面已经提过,Debug和Release只是一组编译选项的差别,实际上并没有什么定义能区分二者。我们可以修改Release版的编译选项来缩小错误 范围。如上所述,可以把Release 的选项逐个改为与之相对的Debug选项,如/MD改为/MDd、/O1改为/Od,或运行时间优化改为程序大小优化。注意,一次只改一个选项,看改哪个选项时错误消失,再对应该选项相关的错误,针对性地查找。这些选项在ProjectSettings...中都可以直接通过列表选取,通常不要手动修改。由于以上的分析已相当全面,这个方法是最有效的。2. 在编程过程中就要时常注意测试 Release 版本,以免最后代码太多,时间又很紧。3. 在 Debug 版中使用 /W4 警告级别,这样可以从编译器获得最大限度的错误信息,比如 if( i =0 )就会引起 /W4 警告。不要忽略这些警告,通常这是你程序中的 Bug 引起的。但有时 /W4 会带来很多冗余信息,如 未使用的函数参数警告,而很多消息处理函数都会忽略某些参数。我们可以用:

#progma warning(disable: 4702)//禁止//...#progma warning(default: 4702)//重新允许来暂时禁止某个警告,或使用#progma warning(push, 3)//设置警告级别为 /W3//...#progma warning(pop)//重设为 /W4来暂时改变警告级别,有时你可以只在认为可疑的那一部分代码使用 /W4。4. 你也可以像Debug一样调试你的Release版,只要加入调试符号。在Project/Settings... 中,选中 Settings for Win32 Release,选中 C/C++ 标签,Category 选 General,Debug Info 选 Program Database。再在 Link 标签 Project options 最后加上 /OPT:REF (引号不要输)。这样调试器就能使用 pdb 文件中的调试符号。但调试时你会发现断点很难设置,变量也很难找到??这些都被优化过了。不过令人庆幸的是,Call Stack窗口仍然工作正常,即使帧指针被优化,栈信息(特别是返回地址)仍然能找到。这对定位错误很有帮助。

正式版本。

苹果normal release是最终的正式版本,也就是标准释放版本,即最终公开推送所有支持机型都能够收到的版本。

Release称为发布版本,它的作用往往是对程序进行各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11555568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存