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之数组巧用

    数组是开发中经常用到的一个类,开发中常常遇到的就是添加对象到数组,和从数组中取对象。当从服务器或者其他一些地方获取...

  • iOS runtime(三)runtime之method(1)m

    iOS runtime(一)runtime之Property 详尽iOS runtime(二)runtime之Iv...

  • 基础篇

    Runtime之必备C知识 Runtime之类的本质 Runtime之消息处理策略 Runtime之常用API 进...

  • 数组Array

    数组Array 基本使用 清空数组,巧用length 遍历数组 push,队尾添加元素 pop,拿出最后一个元素 ...

  • Runtime

    kyson老师 iOS开发之runtime(1):runtime调试环境搭建iOS开发之runtime(2):浅析...

  • iOS-Runtime之数组越界

    关于数组越界目前大概有两种方式,一种是通过分类添加安全的索引方法,第二种就是Runtime实现,第一种如果是个人开...

  • iOS-Runtime之数组越界

    关于数组越界目前大概有两种方式,一种是通过分类添加安全的索引方法,第二种就是Runtime实现,第一种如果是个人开...

  • iOS开发之Runtime常用示例总结

    iOS开发之Runtime常用示例总结 iOS开发之Runtime常用示例总结

  • Runtime全面剖析之原理篇

    如果想了解Runtime的实际应用请看Runtime全面剖析之简单使用 一:Runtime简介二: Runtime...

  • 巧用 PHP 数组函数

    0x00 前言 PHP 的数组是一种很强大的数据类型,与此同时 PHP 内置了一系列与数组相关的函数可以很轻易的实...

网友评论

    本文标题:runtime之数组巧用

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