美文网首页面试相关iOS知识库
_objc_msgForward函数是做什么的,直接调用它将会发

_objc_msgForward函数是做什么的,直接调用它将会发

作者: natewang | 来源:发表于2016-08-07 18:18 被阅读1379次

    当对象没有实现某个方法 ,会调用这个函数进行方法转发。
    (某方法对应的IMP没找到,会返回这个函数的IMP去执行)

    1.调用resolveInstanceMethod:方法,允许用户在此时为该Class动态添加实现。如果有实现了,则调用并返回。如果仍没实现,继续下面的动作。

    2.调用forwardingTargetForSelector:方法,尝试找到一个能响应该消息的对象。如果获取到,则直接转发给它。如果返回了nil,继续下面的动作。

    3.调用methodSignatureForSelector:方法,尝试获得一个方法签名。如果获取不到,则直接调用doesNotRecognizeSelector抛出异常。

    4.调用forwardInvocation:方法,将地3步获取到的方法签名包装成Invocation传入,如何处理就在这里面了。

    如果直接调用这个方法,就算实现了想调用的方法,也不会被调用,会直接走消息转发步骤。

    相关文章

      网友评论

        本文标题:_objc_msgForward函数是做什么的,直接调用它将会发

        本文链接:https://www.haomeiwen.com/subject/mbulsttx.html