美文网首页
iOS运行时消息的传递与转发

iOS运行时消息的传递与转发

作者: Dan_ | 来源:发表于2018-03-11 20:22 被阅读6次

1.消息的传递

objc_msgSend()函数会一句接受者(调用方法的对象)的类型和选择子(方法名)来调用适当的方法。

在class中会先去cache中 通过SEL查找对应函数method(cache中method列表是以SEL为key通过hash表来存储的,这样能提高函数查找速度),若 cache中未找到。再去class中的消息列表methodList中查找,若methodlist中未找到,则取superClass中查找。若能找到,则将method加 入到cache中,以方便下次查找,并通过method中的函数指针跳转到对应的函数中去执行,如果在类及其继承体系中都没有找到,那么就会进入到消息的转发。

2.消息的转发

+ (BOOL)resolveClassMethod:(SEL)selector

修改方法

- (id)forwardingTargetForSelector:(SEL)selector

修改方法的调用

- (void)forwardInvocation:(NSInvocation *)invocation

修改方法及其调用者

如果这3个都没有处理,那么就会doesNotRecognizeSelector抛出异常

相关文章

  • iOS运行时消息的传递与转发

    1.消息的传递 objc_msgSend()函数会一句接受者(调用方法的对象)的类型和选择子(方法名)来调用适当的...

  • iOS消息转发机制

    消息转发机制: 消息转发机制是相对于消息传递机制而言的。 1、消息(传递)机制 RunTime简称运行时。就是系统...

  • 对runtime做个总结

    在iOS动态运行时中,涉及到的有以下几个: 消息传递 方法缓存查找 消息转发 方法混淆(Method-Swizzl...

  • 【iOS】运行时消息传递与转发机制

    前言 Objective-C是一门非常动态的语言,以至于确定调用哪个方法被推迟到了运行时,而非编译时。与之相反,C...

  • IOS 消息传递与消息转发

    1、方法method和selector(选择子)有什么关系 在 Objective-C 中,selector,Me...

  • # iOS基础 # 运行时、消息传递、消息转发学习

    OC语言最大的特色,OC是C的升级、OC通过运行时将代码转为C然后再转为汇编。 OC是一门动态语言,类型的判断、类...

  • IOS消息传递机制

    ios的消息传递机制分为三个阶段:消息发送阶段,动态解析阶段,消息转发阶段。 消息发送阶段: 当ios的对象调用方...

  • iOS运行时消息转发

    iOS开发过程中,有一类的错误会经常遇到,就是找不到所调用的方法,当然这类问题比较好解决,给当前对象或其父类对象添...

  • iOS中的消息转发机制

    OC由于运行时特性,可以在运行期间动态添加方法,这个寻找动态添加的方法的过程就是动态消息转发。iOS的消息转发机制...

  • 消息转发机制

    OC由于运行时特性,可以在运行期间动态添加方法,这个寻找动态添加的方法的过程就是动态消息转发。 iOS的消息转发机...

网友评论

      本文标题:iOS运行时消息的传递与转发

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