卡在KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED

时间:2018-05-17 10:05:43

标签: ios swift swift4 key-value-observing

我使用新的Swift 4 API,并且我以非确定的方式获取KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED。有人能修好吗?代码非常简单,创建一个KVO并将其存储在局部变量中。

private var rateObservation: NSKeyValueObservation?

rateObservation = player.observe(\AVQueuePlayer.rate, options: [.initial, .new]) { (_, change) in
   observer(change.newValue)
}

1 个答案:

答案 0 :(得分:0)

答案对我来说没有意义。但这是使它适用于我的唯一方法。

deinit {
    rateObservation?.invalidate()
}

没有意义,因为新观察的文档清楚地表明我们不需要取消注册通知,并且几乎大部分时间都有效,但有时我得到了提到的异常,当我明确地使观察者无效时它永远不会抛出异常。