iOS如何彻底避免数组越界
2016-03-26 14:54
183 查看
我们先来看看有可能会出现的数组越界Crash的地方;
?
上面代码是有可能会越界的;出现Crash也不好复现,发出去的App总是能收到几条Crash;解决这个问题也很简单代码如下:
?
问题又来了,无论你武功有多高,有时也会忘记加;所以我们要想一招制敌办法;我是想到了用Runtime把objectAtIndex方法替换一下;代码如下:
?
有了上面代码我们用 [_datasourceArray objectAtIndex:indexPath.row] 就不会发生越界Crash了;越界
了会返回nil;看来是一个比较不错的解决方案;把app发出去吧,结果我们Crash比之前高了好几倍(越界的Crash没有了,出新的Crash了);Crash如下
?
都是这个Crash,出现在iOS7以上(含iOS7),关键还没有用户反馈有问题,Crash高了几倍没有一个用户反馈这种情况还是少见的,大家测试还复现不了;测试了一周终于复现了一样的Crash;是这样出现的,替换了objectAtIndex方法有输入的地方出来了软键盘按手机Home键就Crash了;此法不行只,只能另寻他策了。后来我们就给数组新增扩展方法代码如下
?
把之前的代码 WelfareItem *item = [_datasourceArray objectAtIndex:indexPath.row] 改为 WelfareItem *item = [_datasourceArray objectAtIndexCheck:indexPath.row] 就可以了。这样就可以彻底解决数组越界 -[__NSArrayI objectAtIndex:]: index 100 beyond bounds [0 .. 1]' 错误了
?
?
?
了会返回nil;看来是一个比较不错的解决方案;把app发出去吧,结果我们Crash比之前高了好几倍(越界的Crash没有了,出新的Crash了);Crash如下
?
?
相关文章推荐
- iOS的一像素线
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- iOS中为什么block用copy属性
- vs-mda-remote cordova真机测试ios
- 在云中生成和模拟 iOS
- IOS 中block结构的简单用法
- ios_图片放大的两种方式transform和frame
- iOS音视频实现边下载边播放
- iOS开发——代理与block传值
- IOS 杂笔-15(知识小点 readonly)
- iOS开发多线程篇—多线程简单介绍
- iOS 地图导航路线规划详解
- iOS9-URLScheme适配-引入白名单概念
- iOS开发 - 卡片堆叠效果
- 官方文档
- IOS 杂笔-14(被人遗忘的owner)
- IOS开发之——保存图片到相册的功能实现
- IOS的tableView的知识
- .NET是一个不断完善的框架
- VLAN和SVI是两个不同的概念