iOS 进阶面试题及详细答案(中高级)_1.docxVIP

  • 0
  • 0
  • 约8.34千字
  • 约 13页
  • 2026-10-12 发布于河北
  • 举报

iOS 进阶面试题及详细答案(中高级)_1.docx

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)

1亿VIP精品文档

相关文档