美文网首页iOS学习iOS学习开发iOS Developer
简述:Objective-C 运行时消息机制

简述:Objective-C 运行时消息机制

作者: SuperBoy_Timmy | 来源:发表于2017-02-15 16:23 被阅读57次

1.关联对象:将两个对象连起来。定义关联对象是可指定内存管理语义,模仿定义属性时所采用的“拥有关系”与“非拥有关系”。

实际开发中应用举例:UIAlertView,设定一个与之关联的block,等到执行delegate方法时,调用blcok,达到降低业务层代码分散程度;分类、协议中动态添加属性。

2.消息派发机制:<动态绑定>

 步骤:对象实例调用方法:该方法需要在接收者所属类中搜寻其方法列表;若找不到,沿着继承体系向上查找,直到根类;若找不到方法的实现,执行“消息的转发”。

 注:消息由接受者、选择子及参数构成。

3.消息转发机制:动态方法解析;备援接收者;完整的消息转发。

    步骤:先征询接收者所属的类,看其是否能动态添加方法,以处理当前未知的选择子;若没有,请接收者看看有没有其他对象能处理这条消息,若没有备援的接收者,则启动完整的消息转发机制;运行期系统会把消息有关的细节都封装到NSInvocation对象中,再给接收者最后的一次机会,令其设法解决当前未处理的消息,若还是没有处理,则抛出异常。

 注:备援接收者与完整的消息转发机制其本质都是修改调用目标。

4.方法调配技术:调换方法的实现;类的方法列表会把选择子的名称映射到相关的方法实现上,以函数指针(IMP)来表示。如:

Method originalMethod = class_getInstanceMethod([NSString class],@selector(lowercaseString));

Method swappedMethod = class_getInstanceMethod([NSString class],@selector(my_lowercaseString));

method_exchangeImplementations(originalMethod,swappedMethd);

相关文章

  • 简述:Objective-C 运行时消息机制

    1.关联对象:将两个对象连起来。定义关联对象是可指定内存管理语义,模仿定义属性时所采用的“拥有关系”与“非拥有关系...

  • swift学习之Selector

    在Objective-c中,@selector作为方法选择器基于runtime的消息机制,在运行时通过发送消息,寻...

  • Runtime:运行时机制详解

    一、什么是runtime(运行时机制)Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言...

  • Cocoa 消息机制 (Objective-C 反射相关)

    Cocoa 消息机制 (Objective-C 反射相关) 相关概念 动态语言 程序运行时,允许改变程序结构或变量...

  • 1. 消息机制的简单使用

    前言:Objective-C 的底层实现是运行时机制, OC的函数是动态调用过程. 其中最主要的是消息机制. 函数...

  • iOS运行时机制之Runtime

    简介 Runtime简称运行时机制。Objective-C就是运行时机制。也就是在代码编译后运行时的一些机制,其中...

  • Objective-C中的Runtime(一) 文章总结

    第一篇:摘抄自 Objective-C Runtime的那点事儿一消息机制 RunTime简称运行时。就是系统在运...

  • RunTime

    前言 RunTime简称运行时机制,其实OC就是一种运行时机制(消息机制是运行时机制中最重要的机制) 消息机制:任...

  • 关于runtime的一些简单理解

    1.消息发送OC:运行时机制,消息机制是运行时机制最重要的机制消息机制:任何方法调用,本质都是发送消息 SEL:方...

  • iOS理解Objective-C中消息转发机制附Demo

    iOS理解Objective-C中消息转发机制附Demo iOS理解Objective-C中消息转发机制附Demo

网友评论

    本文标题:简述:Objective-C 运行时消息机制

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