消息转发机制

1. instrumentObjcMessageSends辅助分析


在调用方法前后加上instrumentObjcMessageSends,运行后在文件夹\tmp\下会产生一个msgSends-开头的文件

打开文件看看

首先看见调用的是动态方法决议resolveInstanceMethod 后面调用的是forwardingTargetForSelector:

和methodSignatureForSelector: (其实就是快速转发和慢速转发~)

2.forwardingTargetForSelector快速转发

先看下官方文档

找个替代对象去实现


执行 看下输出


完美 

3.methodSignatureForSelector慢速转发


返回一个NSMethodSignature对象 

关联方法 

代码实现:

运行:


5.反汇编工具

前面我们是开的上帝视角了解了forwardingTargetForSelector:和methodSignatureForSelector就是消息转发 ,如果不知道呢  那么我们先看堆栈信息 回到最初的方法没实现的崩溃阶段


我们看到是CoreFoundation ,但是源码文件里面也没有,只好用反汇编工具了


网上有破解版的~~

通过image list 找到镜像文件的路径



拖拽到工具中


接下来我们全局搜索forwarding

只截了一些重点 实在太多了

通过反汇编工具我们其实也是可以找到快速转发和慢速转发的相关方法~~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。