objc_msgSend执行流程
2021-09-17 15:31:21 2 举报
objc_msgSend执行流程
作者其他创作
大纲/内容
标记为已经动态解析
为nil
从receiver类的cache中查找方法
找到了
调用forwardInvocation:
objc_msgSend执行流程-消息发送方法转发流程
消息转发流程
调用+resolveClassMethod:/+resolveInstanceMethod:在此处可动态添加方法
从receiver类的class_rw_t中查找方法
否
未找到
上层是否还有父类
调用方法结束查找
是
调用methodSignatureForSelector:
从父类的cache中查找方法
调用forwardingTargetForSelector:
调用doesNotRecognizeSelector:
从父类的class_rw_t中查找方法
调用方法,结束查找并将方法缓存到receiverClass的cache中
返回值不为nil
receiver是否为nil
方法查找
objc_msgSend执行流程-消息发送方法查找流程
消息转发
方法查找流程
方法解析
方法查找objc_msgSend(返回值,SEL)
进入动态解析流程
objc_msgSend执行流程-消息发送方法动态解析流程
是否曾动态解析
收藏
0 条评论
下一页