4

看来 Swift 的 Array 不会通过 didSet,为什么?

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

if intArray.count == 0 {
    println("Why is intArray not being altered?")
}
4

1 回答 1

5

willSet并且在第一次初始化变量didSet不会被调用,所以这是正常行为,并且对所有属性类型都有效 - 作为一个数组没有区别。

在操场上试试这个:

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

intArray = []

intArray

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

阅读Property Observers中的第二条注释

于 2014-09-18T09:58:31.087 回答