【发布时间】:2016-10-25 14:49:49
【问题描述】:
我将全局变量时间观察者设置为:
self.timeObserver = self.avPlayer?.addPeriodicTimeObserver(forInterval: CMTime(seconds: 0.5, preferredTimescale: CMTimeScale(NSEC_PER_SEC)), queue: DispatchQueue.main) { [weak self] time in
guard let weakSelf = self else {
return
}
// updating label with time
}
当视图关闭时,我调用:
if self.avPlayer != nil {
self.avPlayer!.removeTimeObserver(self.timeObserver)
}
但这会使应用程序崩溃:
*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“您没有提供参考 到任何一个返回的对象 -addPeriodicTimeObserverForInterval:queue:usingBlock: 或 -addBoundaryTimeObserverForTimes:queue:usingBlock:'
请告诉我我做错了什么?谢谢你
【问题讨论】:
-
当你添加一个周期性时间观察者时,你能检查你的
avPlayer不为零吗? -
if self.avPlayer != nil { self.avPlayer!.removeTimeObserver(self.timeObserver) } 我正在检查,不,它不是 nil
-
addPeriodicTimeObserver的行是否只执行一次? -
是的,就在我初始化avplayer的时候
-
看起来 self.timeObserver 在初始化后为空。因此,请验证此行至少运行一次,并且您确实收到了一个对象。
标签: ios swift swift3 avplayer key-value-observing