swift - 新的Key-Value Observing(KVO)只调用.initial而不是.new

时间:2017-11-09 19:09:30

标签: swift

我正在试图弄清楚新的KeyValueObserving(KVO)api。我不知道我做错了什么因为我initial正在观察,但不是newold。这就是我正在做的事情:

import Foundation

class Foo: NSObject {
    @objc var bar = 0
}

let foo = Foo()
let observer = foo.observe(\.bar, options: [.initial, .new, .old]) {(o, change) in
    print("old: \(change.oldValue) - new: \(change.newValue) ")
}
foo.bar = foo.bar + 1
observer.invalidate()

我得到的输出是:

old: nil - new: Optional(0) 

但我应该得到:

old: nil - new: Optional(0) 
old: Optional(0) - new: Optional(1) 

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

根据文档here,您需要在变量声明中添加dynamic关键字。