背景:
之前写过一篇博客(地址: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
本篇文章到这里就结束了,愿大家加班不多工资多,男同胞都有女朋友,女同胞都有男朋友。😊
网友评论