【发布时间】:2017-04-29 00:57:32
【问题描述】:
我第一次实现了 KVO,在某些情况下,它正在工作,并且 observeValue 被正确调用。但是,我在尝试删除 deinit 中的观察者时遇到了崩溃:
无法移除观察者 为了 关键路径“downloadInProgress”来自 因为它没有注册为观察者。
...虽然我确实在viewDidLoad 中注册了对象。
// At the top of my file
dynamic var downloadInProgress: Bool = false
override func viewDidLoad() {
super.viewDidLoad()
self.addObserver(self, forKeyPath: #keyPath(downloadInProgress), options: [.old,.new], context: nil)
}
deinit {
// It crashes here
removeObserver(self, forKeyPath: #keyPath(downloadInProgress))
}
基本上如果downloadInProgress = false,它会崩溃。我究竟做错了什么?谢谢。
【问题讨论】:
-
你确定这个类总是被一个调用
viewDidLoad()的路径实例化吗?
标签: swift swift3 key-value-observing