二十六、Runtime之(十)方法-objc_msgSend()
2019-05-09 本文已影响0人
yqc5521
一、消息转发
1.动态解析阶段,并没有添加方法,当再次retry时,仍找不到方法,这个时候,就不会走动态方法解析,而是走消息转发阶段
2.执行forwarding方法,内部会调动forwardingTargetForSelector方法,通过获取返回值,调用msgSend方法,执行被转发对象的方法。
__forwarding__
3.消息转发的代码实现
消息转发的代码实现
二、方法签名
1.如果不实现forwardingTargetForSelector,或者实现forwardingTargetForSelector,返回值为nil,则会走methodSignatureForSelector方法。
forwardingTargetForSelector
2.方法签名的代码实现
方法签名的代码实现
3.NSInvocation
NSInvocation