swift - KVO - change.newValue和change.oldValue为零

时间:2017-11-09 19:58:42

标签: swift

我正在使用新的KeyValue Observing。我在变量发生变化时接到了我的观察者的电话,但change结构随newValueoldValue一起变为nil,所以它永远不会//do something部分:

let observer = foo.observe(\.bar, options: [.new, .old]) { obj, change in
   if change.kind == .setting && change.oldValue != change.newValue {
       // do something
   }
}

它曾经与旧的KVO方式完美配合。

我将该代码更简单作为示例,这是我实际代码的调试。您可以看到m对象的status var已设置为PREPARING,但change.oldValuechange.newValue均为零:

enter image description here

1 个答案:

答案 0 :(得分:4)

这是一个Swift错误,据报告为https://bugs.swift.org/browse/SR-5872https://github.com/apple/swift/pull/20757上正在讨论解决此问题的请求,但截至2020年10月尚未合并。