栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Swift有动态分配和虚拟方法吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Swift有动态分配和虚拟方法吗?

与C ++不同,不必在Swift中指定方法是虚拟的。编译器将计算出要使用以下哪个:

(性能指标当然取决于硬件)

  • 内联方法:0 ns
  • 静态调度:<1.1ns
  • 虚拟调度1.1ns(指定时类似于Java,C#或C ++)。
  • 动态分配4.9ns(如Objective-C)。

当然,Objective-C始终使用后者。4.9ns的开销通常不是问题,因为这只占整个方法执行时间的一小部分。但是,必要时开发人员可以无缝地回退到C或C
++。但是,在Swift中,编译器将分析可以使用最快的哪个,并尝试代表您进行决策,支持内联,静态和虚拟,但保留用于Objective-
C互操作性的消息传递。可以标记一种

dynamic
鼓励消息传递的方法。

这样做的一个副作用是,动态分配所提供的某些强大功能可能不可用,因为以前假定任何Objective-
C方法都是这种情况。动态分派用于方法拦截,依次由以下人员使用:

  • 可可风格的财产观察员。
  • CoreData模型对象检测。
  • 面向方面的编程

以上是

latebinding
语言提供的功能。请注意,尽管Java使用vtable调度进行方法调用,但它仍被认为是一种后期绑定语言,因此由于具有虚拟机和类加载器系统而具有上述功能,这是提供运行时检测的另一种方法。“纯”
Swift(不带Objective-C互操作)类似于C
++,因为它是具有静态分派的直接可执行的编译语言,因此在运行时这些动态功能是不可能的。按照ARC的传统,我们可能会看到更多此类功能正在编译时移动,这在“每瓦性能”方面具有优势-
这是移动计算中的重要考虑因素。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号