美文网首页
Swift和OC函数调用的区别

Swift和OC函数调用的区别

作者: 萤火驻守心间 | 来源:发表于2022-05-24 07:46 被阅读0次

区别:
1、oc是动态,swift是静态(函数内联)
2、Swift编译时就确定了方法的实现,oc是运行时才确定方法的实现

swift在编译时是通过动态派发和静态派发来确定方法的实现:
1、静态派发
静态派发是指在运行时调用方法不需要查表,直接跳转到方法的代码中执行。
静态派发是有条件的,方法内部的代码必须对编译器透明,并且在运行时不能被更改,这样编译器才能帮助我们。
Swift中的值类型不能被继承,也就是说值类型的方法实现不能被修改或者被复写,因此值类型的方法满足静态派发的要求。
class 中将方法标记为。final 或者 private 就是静态调度。
内联是指在编译期把每一处方法调用替换为直接执行方法内部的代码,可以帮助你避免运行时方法调用的时间开销。

2、动态派发
Swift中的类会创建一个V-Table,这个Table是一个数组,其中存放的是函数指针。子类会按照父类V-Table中函数的存放,如果子类没有覆盖某个方法,那么就会拷贝父类方法的地址,如上面的例子会得到下面的V-Table。
将函数指针和Index所做的映射在编译期就确定了,这就大大减少了运行时的工作量,提高了运行速度。所以在运行时它没有必要知道是哪个类型的实例调用了这个方法,只需要找到相应的V-Table即可,至于是其中的哪个Index,已经在编译期确定了,没必要再去查找Index的值。

相关文章

  • Swift和OC函数调用的区别

    区别:1、oc是动态,swift是静态(函数内联)2、Swift编译时就确定了方法的实现,oc是运行时才确定方法的...

  • 【Swift】oc与Swift混编方法调用

    本文不介绍桥文件搭建和类的导入,只是阐述oc与swift函数方法的小区别 oc中有类方法与对象方法,调用swift...

  • swift函数(一)

    swift和OC的函数天差地别,OC的方法类型与书写方式和调用方式都与swift不一样。 1. 函数的定义 swi...

  • Swift调用C函数指针与OC调用函数指针的区别

    项目使用混编的已经很常见了,在使用过程中遇到了Swift调用C函数和OC调用C函数区别还是有点大的,这里记录一下,...

  • oc Swift 混编

    oc Swift 混编 oc 项目 混编Swift1.1 oc 调用 Swift 的类 和 方法步骤: ...

  • Swift - Discardable Result

    用OC写一个带返回值的函数,不管在OC中调用,还是在Swift中调用,不会出现报错和警告; 而用Swift写一个带...

  • 托XX福写个Swift闭包教程

    闭包基础知识 Swift闭包和OC的block类似不过还是有点区别 OC的block是一个匿名函数 Swift 中...

  • OC 和Swift 互相调用

    一、OC调用swift文件 二、swift调用OC文件 三、注意和总结 添加: 四、自定义桥接文件 一、OC调用s...

  • swift-struct作为数据模型

    struct的不足:1.当项目是swift和oc混合开发时,OC无法调用swift的struct,因为oc调用sw...

  • OC中的load和initialize的区别

    OC中的load和initialize的区别 调用方式load是根据函数地址直接调用initialize是通过ob...

网友评论

      本文标题:Swift和OC函数调用的区别

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