为什么无法在属性观察器 didSet 中更改 Swift 数组?

Bru*_*You 4 arrays observers swift didset

好像Swift的Array不会经过didSet,为什么呢?

var intArray: [Int] = [] {
    didSet {
        intArray += [0]
    }
}

if intArray.count == 0 {
    println("Why is intArray not being altered?")
}
Run Code Online (Sandbox Code Playgroud)

Ant*_*nio 5

willSetdidSet当第一次初始化的变量调用,所以这是正常的行为,并适用于所有物业类型-作为一个数组没有什么区别。

在操场上试试这个:

var intArray: [Int] = [] {
    didSet {
        intArray += [0]
    }
}

intArray = []

intArray
Run Code Online (Sandbox Code Playgroud)

最后一条语句显示intArray为 [0]。

阅读Property Observers 中的第二条注释