美文网首页
swift中函数派发机制

swift中函数派发机制

作者: 梁森的简书 | 来源:发表于2021-05-14 16:15 被阅读0次

OC中

OC中的方法调用最终是走了消息派发机制。

函数派发的方式

静态派发(直接派发)

在编译期编译器就知道了某个函数的实现地址。
优点:高效。
缺点:缺乏动态性,不支持继承,无法实现多态。

动态派发

在运行期,编译器去查找某个函数的实现地址。
动态派发又包含了“函数表”和“消息派发”。

函数表派发

查找类中维护的一个函数表,在函数表中找到某个函数的实现地址。
速度比静态派发慢。

消息派发

OC中的消息机制(runtime中的消息机制)。
具有动态性,可以动态添加方法、动态替换方法的实现、方法转发。
swift中支持了以上所有的派发方式。

Struct、enum(值类型)

静态派发

类class

  1. 普通方法函数表派发
  2. dynamic修饰的方法使用消息派发(@objc修饰的方法只是暴露给了OC)
  3. extension中修饰的方法使用直接派发

NSObject子类

  1. 普通的实例方法使用函数表派发
  2. 对于override的OC方法使用消息派发
  3. dynamic修饰的方法使用消息派发
  4. extension中的普通方法使用直接派发

Protocol

  1. 普通方法使用函数表派发
  2. extension中的普通方法使用直接派发
    协议可以为struct提供多态的支持

别人的图:


image.png

相关文章

  • iOS知识复习笔记(16)---swift相关

    一、函数的派发方式 swift函数的派发机制有三类:static直接派发(静态)派发、table函数派发,mess...

  • 浅谈Swift派发机制

    函数的派发机制分为:静态派发(直接派发)、函数表派发、消息派发 1、Swift中所有ValueType(值类型:S...

  • Swift - 三种函数派发

    Swift 的函数派发可以分为 静态 和 动态 两种机制,而动态派发又分为 函数表派发 和 消息派发 。 Swif...

  • swift中函数派发机制

    OC中 OC中的方法调用最终是走了消息派发机制。 函数派发的方式 静态派发(直接派发) 在编译期编译器就知道了某个...

  • Swift的函数派发

    前言 对于Swift的学者来说函数派发有很大的误区:就是认为Swift沿用Objective-C的消息派发机制,且...

  • Swift 函数派发机制

    原文:Method Dispatch in Swift作者:Brian King 派发机制是程序判断如何去调用函数...

  • Swift 函数派发机制

    编程语言 函数派发机制有三种: 【原文链接】 直接派发 函数表派发 消息机制派发 函数派发是程序判断使用哪种途径去...

  • Swift 函数派发机制

    函数派发方式 能够在编译期确定执行方法的方式叫做静态分派 Static dispatch,无法在编译期确定,只能在...

  • Swift中的函数派发机制

    函数派发机制指的是程序如何找到函数并执行操作的机制。各种各样不同的需求导致不同的函数派发机制。有时可能希望函数直接...

  • swift中在extension中重写父类的方法

    无法在class的extension中直接重写父类的方法swift中函数派发机制[https://www.jian...

网友评论

      本文标题:swift中函数派发机制

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