- 0
- 0
- 约8.34千字
- 约 13页
- 2026-10-12 发布于河北
- 举报
iOS进阶面试题及详细答案(中高级)
一、Objective-C底层原理
1.详细讲解OC的消息发送机制,以及动态决议、慢速转发、快速转发的完整流程
答案:
OC是动态语言,方法调用本质是向对象发送消息objc_msgSend,全程分为快速查找、动态决议、消息转发三个阶段。
1)快速发送阶段(核心流程)
当调用[objmethod],底层执行:
1.校验receiver是否为nil,nil直接返回,不崩溃;
2.获取对象的isa指针,找到当前类的方法缓存表(buckets);
3.缓存命中则直接执行方法实现,流程结束;
4.缓存未命中,遍历当前类的方法列表(methodList);
5.当前类未找到,顺着父类继承链逐级向上查找;
6.找到方法后,将方法缓存到当前类的缓存表,下次调用直接命中;
7.父类链遍历完毕仍未命中,进入消息转发流程。
2)动态决议(第一次补救)
系统会优先调用两个类方法,动态添加方法实现:
-实例方法未实现:+resolveInstanceMethod:
-类方法未实现:+resolveClassMethod:
开发者可以在该方法中,通过class_addMethod动态为SEL绑定IMP。添加成功后,系统会重新走一次消息发送流程,正常执行方法。若未处理,进入下一步。
3)快速转发(二次补救)
调用-fo
原创力文档

文档评论(0)