iOS探索 runtime面试题分析(方法的本质是什么)

二、方法的本质是什么

方法的本质是发送消息objc_msgSend,即寻找IMP的过程

发送消息会有以下⼏个流程:

  1. 快速查找流程——通过汇编objc_msgSend查找缓存cache_t是否有imp实现
  2. 慢速查找流程——通过C++中lookUpImpOrForward递归查找当前类和父类的rwmethodlist的方法
  3. 动态方法解析——通过调用resolveInstanceMethodresolveClassMethod来动态方法决议——实现消息动态处理
  4. 快速转发流程——通过CoreFoundation来触发消息转发流程,forwardingTargetForSelector实现快速转发,由其他对象来实现处理方法
  5. 慢速转发流程——先调用methodSignatureForSelector获取到方法的签名,生成对应的invocation;再通过forwardInvocation来进行处理
  6. 以上流程均无法挽救就崩溃并报错

2020面试刷题与技术储备专区

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容