美文网首页iOS面试题合集(上)
iOS面试题:_objc_msgForward 函数是做什么的?

iOS面试题:_objc_msgForward 函数是做什么的?

作者: iOS猿_员 | 来源:发表于2019-10-17 14:00 被阅读0次

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

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

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

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

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

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


    更多:iOS面试题 答案合集

    相关文章

      网友评论

        本文标题:iOS面试题:_objc_msgForward 函数是做什么的?

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