@iwanglong
2019-08-02T03:17:03.000000Z
字数 269
阅读 272
runtime如何通过selector找到对应的IMP地址?(分别考虑类方法和 实例方法)
iOS
- 每一个类对象中都一个对象方法列表(对象方法缓存)
- 类方法列表是存放在类对象中 isa 指针指向的元类对象中(类方法缓存)
- 方法列表中每个方法结构体中记录着方法的名称,方法实现,以及参数类型,其实 selector 本质就是方法名称,通过这个方法名称就可以在方法列表中找到对应的 方法实现.
- 当我们发送一个消息给一个 NSObject对象时,这条消息会在对象的类对象方法 列表里查找
- 当我们发送一个消息给一个类时,这条消息会在类的 Meta Class 对象的方法列表 里查找