使用Swift计算属性。访问器和Mutator函数

时间:2016-02-10 02:40:35

标签: swift performance

来自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 {}

上使用它

1 个答案:

答案 0 :(得分:1)

这里的关键是编写惯用的Swift代码;斯威夫特的一处房产预计将是:

var field: Int = 0 {
    didSet {
        //Any consequences of setting here
    }
}

您的getField() / setField()解决方案不常见,并且不是预期使用该语言。可读性是这里最重要的方面,但这与性能一致:我确信随着语言的进一步发展和优化,它肯定会确保其自己的惯用代码继续快速运行,但它可能并不关心性能您的getField() / setField()