文章目录
前言
利用Objective-C Runtimee的动态绑定特性,将一个方法的实现与另一个方法的实现进行交换。交换两个方法的实现一般写在分类的load方法里面,因为load方法会在程序运行前加载一次,而initialize方法会在类或者子类在 第一次使用的时候调用,当有分类的时候会调用多次。
应用场景:数据采集、生命周期、响应事件埋点。
- 注意事项
load 的加载比main 还要早,所以如果我们再load方法里面做了耗时的操作,那么一定会影响程序的启动时间,所以
在load里面一定不要写耗时的代码
。不要在load里面取加载对象,因为我们再load调用的时候根本就不确定我们的对象是否已经初始化了,
所以不要去做对象的初始化
I Method Swizzling基础
在Objective-C的Runtime中,一个类是用一个名为objc_class的结构体表示的,它的定义如下
https://developer.apple.com/documentation/objectivec/objective-c_runti