AVPlayer removeTimeObserver 使应用程序崩溃 (swift 3)
AVPlayer removeTimeObserver crashes app (swift 3)
我将全局变量时间观察器设置为:
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)
}
但这会使应用程序崩溃并提示:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'You did not supply a reference
to an object returned by either
-addPeriodicTimeObserverForInterval:queue:usingBlock: or -addBoundaryTimeObserverForTimes:queue:usingBlock:'
请告诉我我做错了什么?谢谢
您必须打开 self.timeObserver
。
removeTimeObserver()
接收 Any
对象,但您传入的是 Any?
,这会导致崩溃。
我将全局变量时间观察器设置为:
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)
}
但这会使应用程序崩溃并提示:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'You did not supply a reference to an object returned by either -addPeriodicTimeObserverForInterval:queue:usingBlock: or -addBoundaryTimeObserverForTimes:queue:usingBlock:'
请告诉我我做错了什么?谢谢
您必须打开 self.timeObserver
。
removeTimeObserver()
接收 Any
对象,但您传入的是 Any?
,这会导致崩溃。