计算属性的getter被调用两次

时间:2016-10-29 07:16:05

标签: ios swift computed-properties

我有以下代码:

class A {
    var value = 1
}

struct B {
    private var _a: A
    var a: A {
        get {
            print("getter")
            return _a
        }
    }

    init(a: A) {
        _a = a
    }
}

let b = B(a: A())

(b.a).value = 10
// print "getter" once

b.a.value = 10
// print "getter" twice

如果我只是阅读a.value,则会调用一次getter。问题是(b.a).value =b.a.value =之间有什么区别?为什么Swift表现得像这样?

如果B是类而不是struct,则会发生同样的情况。

0 个答案:

没有答案