iOS BAT 高频面试题及详细答案(实战口语版).docxVIP

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

iOS BAT 高频面试题及详细答案(实战口语版).docx

iOSBAT高频面试题及详细答案(实战口语版)

一、Objective-C基础核心题

1.讲讲OC中的消息机制,objc_msgSend执行流程

OC是动态语言,方法调用本质就是给对象发送消息,核心函数是objc_msgSend,整个流程分三步,面试里重点说查找和动态决议:

第一步:消息发送。调用方法时,编译器会把方法调用转成objc_msgSend(对象,方法SEL,参数),首先判断对象是否为空,空对象直接返回,不崩溃。然后从对象的类缓存里查找方法,缓存命中就直接执行方法实现。

第二步:未命中缓存,走类方法列表查找。先查当前类的方法列表,遍历匹配SEL,找到后存入缓存再执行;当前类找不到,就顺着父类链,一直查到根类NSObject。

第三步:动态方法决议。如果整个继承链都没找到方法,不会直接崩溃,会开启补救流程。首先调用resolveInstanceMethod,允许动态添加方法实现;决议失败后,进入消息转发,先尝试快速转发forwardingTargetForSelector,转发给其他对象处理;快速转发无效,再走慢速转发methodSignatureForSelector和forwardInvocation。

所有流程走完还是没有有效实现,才会报unrecognizedselector崩溃。

2.分类(Category)和扩展(

文档评论(0)

1亿VIP精品文档

相关文档