https://juejin.im/post/593f77085c497d006ba389f0
面试:消息机制方法调用流程
怎么去调用eat方法,对象方法:(保存到类对象的方法列表) ,类方法:(保存到元类(Meta Class)中方法列表)。
1.OC 在向一个对象发送消息时,runtime库会根据对象的isa指针找到该对象对应的类或其父类中查找方法。。
2.注册方法编号(这里用方法编号的好处,可以快速查找)。
3.根据方法编号去查找对应方法。
4.找到只是最终函数实现地址,根据地址去方法区调用对应函数。
补充:一个objc对象的isa的指针指向什么?有什么作用?
每一个对象内部都有一个isa指针,这个指针是指向它的真实类型,根据这个指针就能知道将来调用哪个类的方法。
runtime 常见作用
1,动态交换两个方法的实现
2,动态添加属性
3,实现字典转模型的自动转换
4,发送消息
5,动态添加方法
6,拦截并替换方法
7,实现 NSCoding 的自动归档和解档
网友评论