来自Java背景,其中getter和setter通常用于为私有字段提供公共接口,我在swift中看到计算属性作为这种访问器和mutator方法的集成修改。据我所知,计算属性旨在修改或检索任何其他字段的值,同时为其他代码提供功能。 鉴于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 {}
答案 0 :(得分:1)
这里的关键是编写惯用的Swift代码;斯威夫特的一处房产预计将是:
var field: Int = 0 {
didSet {
//Any consequences of setting here
}
}
您的getField()
/ setField()
解决方案不常见,并且不是预期使用该语言。可读性是这里最重要的方面,但这与性能一致:我确信随着语言的进一步发展和优化,它肯定会确保其自己的惯用代码继续快速运行,但它可能并不关心性能您的getField()
/ setField()
。