Objective-C消息发送
2018-05-28 14:55:44 0 举报
Objective-C消息发送机制
作者其他创作
大纲/内容
是
否
_class_lookupMethodAndLoadCache3()
实现了methodSignatureForSelector()且调用返回值不为nil
是否找到IMP
__CFInitialize()(CF Runtime初始化调用)
是否实现doesNotRecognizeSelector
返回nil
CFLog()打印日志
实现了forwardingTargetForSelector()且调用返回值不为nil不为receiver
忽略垃圾回收搜索类缓存
是否进行过动态方法解析
在类的方法列表中查找
红色为汇编代码蓝色为C/C++代码黑色为CF框架闭源代码绿色为流程结束
doesNotRecognizeSelector()
返回forwardInvocation的结果
_class_resolveMethod()处理动态方法解析过程
search cache
__CF_forwarding_prep_0()或__forwarding_prep_1__()
_objc_msgForward()或_objc_msForward_stret()
实现了forwardInvocation()
nil?
是否为_objc_msgForward_impcache
在类的继承层中查找缓存和方法列表
用新的target重新发送消息
__forwarding__0
将_objc_msgForward_impcache作为结果并写入缓存
+resolveInstanceMethod或+resolveClassMethod
MethodTableLookup()
调用IMP
命中
使用方法签名生成NSInvocation对象并调用forwardInvocation:
Objective-C消息发送机制
objc_msgSend() 方法
收藏
收藏
0 条评论
下一页