iOS底层原理 11 : 消息转发机制

2020-09-24  本文已影响0人  smooth_lgh

前言: 在慢速查找流程中,如果最后都没有找到这个imp,那么会进入动态方法决议resolveMethod_locked(),那么接下来会到哪里呢?

我们经常会看到这样一张图:


消息转发流程.jpg

那么就是这样一个流程,底层代码具体是怎样实现的呢:

在我们不知道怎么办的时候,我们可以查看堆栈。

我们看到在执行doesNotRecognizedSelector之前,执行__forwarding_prep_0______forwarding___

查看堆栈.png
那么接下我们要去寻找__forwarding_prep_0______forwarding___,我们下载CoreFoundation开源了的代码里面查找,发现找不到。

接下来通过image list指令查看所有的编译文件
我们找到CoreFoundation的编译文件路径:/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation

image list.png

接下来我们通过hopper软件对这个CoreFoundation编译文件进行反汇编

__forwarding_prep_0___.png
___forwarding___的伪代码里面,我们看到: ___forwarding___.png
上一篇 下一篇

猜你喜欢

热点阅读