iOS 方法交换 method_exchangeImplementations
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 方法交换 method_exchangeImplementations相关的知识,希望对你有一定的参考价值。
参考技术A 方法交换使用方法交换需要注意些什么呢
1、在交换系统方法后要注意结束前调用本方法,也就是执行系统方法
2、再交换前,判断类中是否已经实现了系统方法,没有的话需要增加方法,避免交换父类方法
3、加dispatch_once,只执行一次
方法交换
当我们用如下方法写方法交换的时候,会出现什么问题呢
设想一种情况,想交换UIButton的sendAction方法,用上述方法,实际上交换的是父类的sendAction和UIButton的custom方法,那么当点击其他继承UIControl的类时,比如UISegmentedControl,会出现崩溃,因为调用UISegmentedControl的sendAction调用的是custom方法,但是UISegmentedControl是没有这个custom方法的,就会抛出异常
那么就要增加判断
或者
第二种和第三种原理是一样的,只是写法略有不同
以上是关于iOS 方法交换 method_exchangeImplementations的主要内容,如果未能解决你的问题,请参考以下文章