美文网首页iOS开发
OC 消息转发机制

OC 消息转发机制

作者: 蚂蚁牙齿不黑 | 来源:发表于2017-06-27 12:11 被阅读79次
image.png

method的定义

image.png

消息转发本质:
在运行时将方法地址(imp)和一个名字(sel)绑定加入到class的方法表中

案例场景

以对象Person不能执行"fly()"的操作,而对象Plane有"fly()"的能力,但是Person想要具备飞行的能力

Person类一个只定义未实现的方法"fly()"和一个未定义却实现的方法"ICanFly()"

image.png image.png

Plane类有一个实现的方法"fly()"

image.png image.png

调用Person的wantToFly方法 从消息转发的角度看Person有三种方式可以实现
Person需导入 <objc/runtime.h>

image.png

消息转发分为3个步骤

1.动态方法解析
作用:在不具备处理这个方法的类(Person)的方法列表中加入你想要执行的方法"fly()"

image.png

2.备用接收者
作用:当前的类(Person)无法处理这个方法,找一个实现这个方法的类(Plane)代为处理这个方法
疑问? 看到这里 发现当前类 是不是感觉oc 也能间接的实现多继承了?

image.png

3.完整转发
作用:当前的类(Person)无法处理这个方法,找一个实现这个方法的类(Plane)代为处理这个方法

image.png

到这里就结束了,工作中如果使用这套机制,会让代码变得很混乱,能用设计模式代替的尽量用设计模式代替

相关文章

  • 关于Runtime 消息发送机制的延伸

    说到OC 不得不说一下OC 的消息转发机制;何为OC 的消息转发机制;其实就是这样的; Objc 在向一个对象发送...

  • OC消息机制,消息转发机制

    Runtime简称运行时,其中最主要的是消息机制 概述 C 与 OC 的不同 1.C 语言,函数的调用在编译的时候...

  • Runtime知识点整理1

    OC消息机制?消息转发机制流程?什么是Runtime?什么场景下使用? ==============巴拉巴拉......

  • oc消息转发机制

    一、消息转发机制 在OC中,调用一个对象的方法,实际上是给对象发了一条消息,在编译Objective-C函数调用的...

  • OC消息转发机制

    当一个对象收到它没实现的消息的时候,通常会发生如下的情况。 调用+(BOOL)resolveInstanceMet...

  • OC 消息转发机制

    首先了解几个概念:class 的定义 method的定义 消息转发本质:在运行时将方法地址(imp)和一个名字(s...

  • OC 消息转发机制。

    当调用一个 NSObject 对象不存在的方法时,并不会马上抛出异常,而是会经过多层转发,层层调用对象的-reso...

  • OC 消息转发机制

    首先我们看一下objc_msgSend它具体是如何发送消息: 首先根据receiver对象的isa指针获取它对应的...

  • OC消息转发机制

    消息转发的两大阶段 先征询接收者,所属的类,看其是否能够动态添加方法,以处理这个『未知的选择子』,这叫做动态方法解...

  • OC消息转发机制

    暂时先看这篇文章消息转发

网友评论

    本文标题:OC 消息转发机制

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