iOS 消息转发

2021-10-22  本文已影响0人  你飞跃俊杰

消息转发机制

消息转发.png

1.动态方法解析

首先是征询接收者所属的类,看其是否能动态添加调用的方法,来处理当前这个未知的选择子;

2.快速消息转发

寻找是否在其他对象内有该方法实现,并将该消息转发给这个对象.如果目标对象实现了该方法,Runtime这时就会调用这个方法,给你把这个消息转发给其他对象的机会.只要这个方法返回的不是nil和self,整个消息发送的过程就会被重启,当然返回的对象会变成return的对象,否则就会继续nurmal fowarding

3.标准消息转发

获取方法签名
如果失败就抛异常,如果成功了,并获取参数和返回值,就会创建invocation 对象,并将forworadinvocation消息转发给该对象

消息转发源码

13.0后检查参数开关,关不了


image.png

发送消息
强转一下


image.png

给父类发消息


image.png

汇编发送消息


image.png

符号断点


image.png image.png

汇编代码


image.png

底层用汇编:调用频繁,汇编性能高,safe

查找消息转发的方法

image.png image.png

手机,M1:arm64,模拟器:i386,x84_64 电脑

image.png image.png image.png image.png

找到了方法

image.png

这里也有


image.png

这样也可以找


image.png

慢速查找


image.png
上一篇下一篇

猜你喜欢

热点阅读