我试图从我的应用程序中挤出最后一点性能。我尽可能在类上使用结构(无状态共享、默认直接调度等)。但是我的视图控制器和 UIView 对象显然仍然是类。出于性能原因,我想对我的每一个方法和数据成员 强制直接调度。
我是否还需要在我的类final中标记每个var、let和func,或者仅仅标记托管类 final 就足够了,以便它下面的所有东西都可以利用直接方法调度?
换句话说:在每个方法和变量之前粘贴 final 是非常乏味的。所以我希望将它放在类本身上具有强制直接调度所有类成员的相同效果。但我不知道如何测试或验证它。
对于那些想知道我在说什么的人,请查看这篇文章:“Swift 中的方法调度”。默认情况下,结构和协议扩展为您提供静态方法调度(最快的性能),但类没有。类中的静态方法可以,但我想对所有实例方法和数据成员强制静态调度。
https://www.raizlabs.com/dev/2016/12/swift-method-dispatch/
swift 语言运行时文档提到了对子类化能力的影响,但没有描述子成员的调度行为和标记为“最终”的类的函数会发生什么。如果下面的所有内容都获得了静态方法调度,而不必单独标记所有内容,那就太好了。
最终的
将此修饰符应用于类或类的属性、方法或下标成员。它应用于一个类以指示该类不能被子类化。它应用于类的属性、方法或下标,以指示不能在任何子类中覆盖类成员。有关如何使用 final 属性的示例,请参阅防止覆盖。