runtime之数组巧用

数组是开发中经常用到的一个类,开发中常常遇到的就是添加对象到数组,和从数组中取对象。当从服务器或者其他一些地方获取数据为空的时候,不慎添加至数据,或者取值数组越界就会崩溃。下面利用runtime解决这两个问题。

1、添加nil到数组

在NSMutableArray类别方法中,重写load方法,利用runtime进行方法交换,如下图


使用自定义的方法wtkAddObject来替换系统的addObject。load方法为第一次加载该类时调用,所以即使不导入类别的头文件,也会走这个方法。另外,NSMutableArray的真正类型为__NSArrayM.

自定义方法:

添加至数组前,先判断obj是否为空。需要注意的是,这里不能调用系统的addObject,否则会死循环。这点一开始一直不理解,百度也没有搜到。后来终于想通,IMP方法已经交换,所以才会调用自定义的方法。

2、数组越界

交换方法与上边的一样,都是在load方法中进行,如下图

使用自定义的objectAtIndex来替换系统的

可以在数组越界的分支里边来进行所需要的操作。else里边原理与上边一致。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容