除了架构方面的考虑,为什么要在Swift中标记最终内容

时间:2015-10-31 15:31:12

标签: swift

除了显而易见的原因,例如,如果按设计我不想要某些方法,属性或任何被覆盖继承树的东西,是否有其他理由在Swift中标记final

例如,是否有性能方面的考虑?我记得在某些地方读过SO答案,这些答案提出了一些建议。

1 个答案:

答案 0 :(得分:4)

来自Apple的Swift博客:Increasing Performance by Reducing Dynamic Dispatch

  

Swift允许类重写在其超类中声明的方法和属性。这意味着程序必须在运行时确定引用哪个方法或属性,然后执行间接调用或间接访问。这种称为动态调度的技术以每次间接使用的恒定运行时间开销为代价来提高语言表达能力。

使用final是通过消除这种动态来提高性能的几种方法之一:

  

“final”关键字是对类,方法或属性的限制,表示无法覆盖声明。这允许编译器安全地忽略动态调度间接。