美文网首页
Swift静态 派发和动态派发

Swift静态 派发和动态派发

作者: 牛奶红茶 | 来源:发表于2021-04-12 17:20 被阅读0次


1.静态派发机制同时支持值类型引用类型

然而,动态派发机制仅支持引用类型比如Class,简而言之:对于动态性或者动态派发,我们需要用到继承特性,而这是值类型不支持的

首先全面了解一下,由4种派发机制,而不是两种(静态和动态)

1.内联(inline)(最快)

2.静态派发(Static Dispatch)

3.函数表派发(Virtual Dispatch)

4.动态派发(Dynamic Dispatch)(最慢)

由编译器决定应该使用哪种派发技术,当然有限选择内联函数,然后按需选择

静态派发VS动态派发

Objective-C默认支持动态派发,中华和钟派发技术以多态的形式为开发人员提供了灵活性,比如子类可以重写父类的方法,这很棒,然而这也是需要付出代价的

动态派发以一定量的运行时开销为代价,提高了语言的灵活性,这意味着,在动态派发机制下,对于每个方法的调用,编译器必须在方法列表中查找执行方法的实现,编译器需要判断调用方,是选择父类的实现,还是子类的实现,而且由于所有对象的内存都是在运行时分配的,因此编译只能在运行时执行检查,

而静态调用,则没有这个问题,在编译期的时候,编译器就知道要为某个方法调用某种实现,因此,编译器可以执行某些优化,甚至在可能的情况下,可以将某些代码转成inline函数,从而使整体执行速度异常快

2.如何在swift中实现动态派发和静态派发

->要实现动态派发,我们可以使用继承,重写父类的方法,另外我们可以使用dynamic关键字,并且需要在@objc关键字前面加上关键字,以便将方法公开给OC runtime使用

->要实现静态派发,我们可以使用final和static关键字,保证不会被覆盖

相关文章

  • Swift派发机制

    Swift派发分:静态派发和动态派发 静态派发:(又叫:直接调用) 静态派发机制,同时支持值类型和引用类型;静态派...

  • Swift - 三种函数派发

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

  • iOS那些不解的知识收集

    Swift 静态派发和动态派发动态派发是指需要在运行时找到方法的具体实现。静态派发是指在运行时调用方法不需要查表,...

  • Swift静态 派发和动态派发

    1.静态派发机制同时支持值类型和引用类型 然而,动态派发机制仅支持引用类型,比如Class,简而言之:对于动态性或...

  • Swift的静态派发和动态派发机制

    原文地址:Static vs Dynamic Dispatch in Swift: A decisive choi...

  • 浅谈Swift派发机制

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

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

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

  • Swift - 函数的派发方式.

    编译型语言有三种基础的派发方式: 静态派发;函数表派发;消息机制派发(动态派发).我们都知道Objective-C...

  • Swift 的函数派发机制

    介绍 首先全面了解一下,有4种派发机制,而不是两种(静态和动态): 内联(inline) (最快) 静态派发 (S...

  • Swift 和 Objective-C的区别

    swift是静态语言 oc是动态语言 swift是面向协议编程 oc是面向对象编程 纯swift的函数派发方式是直...

网友评论

      本文标题:Swift静态 派发和动态派发

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