runtime之数组巧用

作者: 逆流丶而上 | 来源:发表于2016-08-16 15:45 被阅读144次

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

    1、添加nil到数组

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

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

    自定义方法:

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

    2、数组越界

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

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

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

    相关文章

      网友评论

        本文标题:runtime之数组巧用

        本文链接:https://www.haomeiwen.com/subject/xzupsttx.html