一个oc类的+load方法是在app开始运行时首先会被调用执行的方法,也就是说,当app被点击,再被系统加载app程序进入内存后,首先会实例化所有类到代码或全局区(这里不做深究),而加载所有类的设置时,就会调用类的load方法,如果要给一个类做方法交换,则一般情况放在load方法中来操作。方法交换一旦完成,则程序运行中全局生效。
一个类B可能有继承来的super类A,还有可能有自己的分类C,如果分类中也实现了load方法,它们的调用顺序是怎么样的呢?系统首先会调用super的load方法,然后再调用类B自身的load方法,再次才会调用类B的分类C的load方法,也即是说真个继承链包括分类扩展中的load方法都会被执行到,只是执行顺序需要关注一下。load方法不同于其他覆盖方法在分类中的体现,如果类B本身中的其他方法在分类C中被重写,则会优先执行分类C中的。但是load不同,都会被执行到,因为这是类加载设置的方法
好了,不罗嗦,开始撸代码~
先创建 UIControl分类 因为 我是对继承UIControl 的 类 进行事件捕获
如:
originalSelector 是系统 事件
swizzledSelector 是 我们自定义 需要替换 originalSelector 的事件
这个 是 封装 事件 交换的方法 等下代码 会贴出
方法交换