============================================================
博文原创,转载请声明出处
============================================================
公司的应用在本地测试没有问题,于是提交到app store,审核通过后,自己下下来看看,去发现了一个crash。回到自己的mac上断点调试,正常。思考片刻,想起自己在本地开发是debug模式,而app store发布的是release模式,难道是两者的不同?于是我切换到release模式重新运行(切换方式如下图),报错。好吧,打断点找原因。却发现断电的log不打印,而且查看内存也是乱起八糟,疯掉。于是开始思考ios的debug和release有什么不同。
Release是发行版本,比Debug版本有一些优化,文件比Debug文件小 Debug是调试版本,Debug和Release调用两个不同的底层库。
一、"Debug是调试版本,包括的程序信息更多"
二、只有DEBUG版的程序才能设置断点、单步执行、使用TRACE/ASSERT等调试输出语句。
三、REALEASE不包含任何调试信息,所以体积小、运行速度快。
说一下我这次遇到的错误:
代码是一段循环,错误原因是我数组越界了
int emojiRangeArray[12] = {0,10,20,30,40,50,60,70,80,90,100,104};
for (int j = 0 ; j<12 ; j++ ) {
int startIndex = emojiRangeArray[j];
int endIndex = emojiRangeArray[j+1]; //【1】、这里j最大是11,所以j+1是12,越界了
printf("showEmojiView---startIndex: %d, endIndex: %d\n",startIndex,endIndex);
for (int i = startIndex ; i<= endIndex ; i++ ) { //【2】、这里由于上面越界,这里提供的数值不对,所以内部NSArray objectAtIndex调用时候越界了
但是在debug中,emojiRangeArray[12]=12,小于startIndex,【2】处条件不符,循环结束,没有触发exception。
但是在release中,emojiRangeArray[12]=1094795585(应该是内存地址),大于于startIndex,【2】处条件符合,继续循环,触发了exception。
关于release和debug的不同,我还会继续记录,今天先写到这里吧,下班了,久违的双休啊
分享到:
相关推荐
学习iOS,最直接的方式就是买一台macBook pro,然后下载xcode,再挑选一本合适自己的ios入门书籍,object-c的学习过程中,第一要接触的ide还是xcode,或许网上有许多介绍xcode的资料,也有许多object-c学习的书籍,...
资源名称:iOS开发视频教程资源目录:【】iOS开发视频教程-第01讲-iOS历史介绍【】iOS开发视频教程-第02讲-XCode安装【】iOS开发视频教程-第03讲-UIView_PPT【】iOS开发视频教程-第04讲-UILabel【】iOS开发视频教程-...
用法从CMake代码生成Xcode项目: [ios-cmake-in-native-xcode] > rm -rf _builds # clean-up if needed[ios-cmake-in-native-xcode] > cmake -Hcmake-ios-project -B_builds -GXcode[ios-cmake-in-native-xcode] > ...
These tools include AU Lab, OpenGL Driver Monitor, OpenGL Profiler, Pixie, Quartz Debug, CarPlay Simulator, HomeKit Accessory Simulator, IO Registry Explorer, Network Link Conditioner, PacketLogger, ...
网络上没有一篇文章是如此详细描述了安装MAC虚拟机到Delphi XE进行IOS开发的 MAC虚拟机安装 ----> MAC系统升级 ---->VMWare Tools安装 ---->获取证书 ---->加载开发者设备 ---->下载安装XCode ---->Delphi XE...
IOS应用源码之【应用】电子书阅读器 - iOS PDF Reader(Xcode 4.2 and iOS 5).rar
DeviceSupport,让 Xcode 支持真机调试 iOS14.2(beta)。 使用方法: 解压缩后把文件夹拷贝到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport目录下重启 Xcode 即可。
之前遇到的需求,ios上没有类似的实现。搞了好久在网上搜了很多资料都不能解决最后找到了一个c/c++的底层源码,才实现了最后整理了下上传了。...运行在xcode环境下,关键算法的文件是AES.h和AES.mm文件。
Xcode 快速注释插件VVDocumenter-Xcode-master 三个///快速注释 下载解压后 用Xcode打开工程文件,Command + B进行编译,再重启Xcode即可
将Xcode适配可以调试、编译、运行、打包系统版本号为iOS 16.0 版本的设备,解决"Could not find Developer Disk Image"问题
Xcode升级到iOS15以后发现无法创建category了,现已找到解决方案供大家参考。 这是由于Xcode15缺少了"CategoryNSObject"和"ExtensionNSObject"两个文件夹导致的,解决办法就是将这两个加进去就好了。 如果你有旧的...
将Xcode适配可以调试、编译、运行、打包系统版本号为iOS 12.0 版本的设备,解决"Could not find Developer Disk Image"问题 使用详情 请前往https://blog.csdn.net/u010731949/article/details/52576792
IOS APP应用开发 微博 Xcode 详细代码
iOS11 真机测试 路径 /applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
Xcode开发,ios12.0(16A366)版本兼容包。适用于老旧mac,虚拟机Mac以及黑苹果,在不能更新mac版本无法升级Xcode时,使用该兼容包。可使低版本Xcode对ios11.4的真机进行真机测试
Xcode iOS 16真机调试包 开发调试 iOS16适配
主要介绍了IOS中(Xcode) DEBUG模式(RELEASE模式)控制NSLog输出,NSLog输出方式的相关资料,需要的朋友可以参考下
iOS 7 Programming Fundamentals: Objective-C, Xcode, and Cocoa Basics by Matt Neuburg (Author) Publisher: O’Reilly Media (October 2013) Language: English ISBN-10: 1491945575 ISBN-13: 978-...
如果使用低版本的Xode真机运行比当前Xcode所支持的最高iOS版本还要高的系统时,将开发包导入到里面重启Xcode可真机测试。导入路径:Finder--应用程序-Xcode--右键显示包内容--Developer--Platforms--iPhoneOS....