iOS开发中防止数组越界导致的崩溃(升级版)

背景:

之前写过一篇博客(地址:https://blog.csdn.net/u010105969/article/details/56011127)也是关于防止数组越界崩溃的,可当时只考虑到了数组在调用objectAtIndex:这个方法的情况,而没有考虑arr[3]这种直接从数组中取数据的情况,所以说当时的防止数组越界崩溃的预防方法还是有漏洞的,在看了别人写的一篇文章后让我觉得当初的防数组越界崩溃的方法可以升级一下了。

思想:

和之前的思路是一样的也是替换方法,只不过多替换了一个objectAtIndexedSubscript:方法,这个方法是在通过arr[index]下标的形式调用的。

这里说一下NSArray的几个类簇

__NSArray0:空数组

__NSArrayI:不可变数组

__NSArrayM:可变数组

_NSSingleObjectArrayI:单元素数组


为了在Release模式不崩溃,bug模式下崩溃(为了我们更好地调试bug),我让替换方法只在Release模式下调用。

demo地址:https://gitee.com/liangsenliangsen/anti__boundary_collapse

补充:

这里有个demo,不仅防止数组越界崩溃,还能防止字典、字符串越界造成的崩溃

demo地址:https://gitee.com/liangsenliangsen/safeObject.git

本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。😊

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 22,715评论 8 227
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 8,499评论 1 27
  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    卑微的戏子阅读 334评论 0 1
  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 1,150评论 0 9
  • 我总是喜欢没有人的路上,没有人的地方,看不到尽头的风景,无边无际的地方,那样会有不一样的说不清道不...
    偏执的狂徒阅读 125评论 0 4