【发布时间】:2016-05-20 06:10:15
【问题描述】:
来自 Java 背景,其中 getter 和 setter 通常用于为私有字段提供公共接口,我将 swift 中的计算属性视为此类访问器和修改器方法的集成修改。我了解计算属性旨在修改或检索任何其他字段的值,同时为其他代码提供功能。 鉴于 Swift 计算属性似乎与 Java getter 和 setter 具有相同的用途和用法,那么以下 swift 声明是否存在显着的性能差异?与访问器和修改器相比,使用计算属性是否有任何性能优势?
计算属性
private var privateField: Int = 0
var field: Int { get { return privateField } set { privateField = newValue } }
Getter/Setter
private var privateField: Int = 0
func getField() -> Int {
return privateField
}
func setField(newValue: Int) {
privateField = newValue
}
在可读性方面,我个人认为分离方法的方式看起来更整洁更有条理,如果没有性能问题我会使用它而不是get {} set {}
【问题讨论】:
-
删除了
[java]标记,因为它似乎不需要关于 Java 的答案。 -
不要。您提到的 getField/setField 构造可能是 Objective-C 历史中的一个混淆,因为这就是声明属性的方式,而且它很丑陋。在 Swift 中,这意味着你没有一个名为“field”的字段,你有两个名为“getField”和“setField”的方法。不大好。而且你不能使用“willSet”和“didSet”。
标签: swift performance