4-5最后两次调用

来源:4-5 消息转发流程

saultong

2019-05-06

最后的两次eating调用,第二次没有调用resolveInstanceMethod:方法是因为缓存中有student的imp还是有eating方法呢?

写回答

1回答

逆风

2019-05-13

确实是因为缓存的问题,但不是student的imp,也不是有eating方法。因为有imp:_objc_msg_Forward_impcache,它是一个特殊的imp。可以自己仔细分析下消息转发这块流程,resolveInstanceMethod准确来说属于消息查找流程。因为第一次resolveInstanceMethod没有返回IMP,第二次还要继续执行resolveInstanceMethod,是不多此一举....

1
0

面试跳槽提升必备 全面解析iOS中的Runtime机制

高薪职位,复杂业务需求,高性能APP,Runtime技术不可不学。

275 学习 · 48 问题

查看课程