【发布时间】:2016-06-14 17:28:15
【问题描述】:
我有一段时间在 Swift 1 中构建的视频应用程序,我一直在尝试迁移到 Swift 2.2。除了与观察者有关的奇怪崩溃之外,这一切(最终)都有效。
func removeObservers()
{
print("REMOVING OBSERVERS")
if ( !self.is_image && self.player != nil ) {
if (self.player?.observationInfo != nil) {
self.player?.removeObserver(self, forKeyPath: "currentItem.status")
self.player?.removeObserver(self, forKeyPath: "readyForDisplay")
}
}
NSNotificationCenter.defaultCenter().removeObserver(self)
}
这在以前使用 SwiftTryCatch 时有效,但是在原位崩溃时出现“'Cannot remove anobserver for the key path "readyForDisplay" from because it is not registered as an observer.'”或者观察者注册在如果我将其注释掉,则释放对象。
如果我向它添加一个 do { } catch {} ,我会收到一个“这不会抛出”的错误,它只会崩溃。我该如何去把它放在某种形式的 try-catch 格式中?
【问题讨论】:
-
我遇到了一个与此非常相似的问题。您是否在代码的任何其他部分中删除了该观察者?最简单的方法可能是统一创建和删除观察者的位置......我在显示后删除了 readyForDisplay,但是当 dealloc 出现时无法删除它。
标签: ios swift swift2 key-value-observing