AVPlayer removeTimeObserver 崩溃应用程序(swift 3)
Posted
技术标签:
【中文标题】AVPlayer removeTimeObserver 崩溃应用程序(swift 3)【英文标题】:AVPlayer removeTimeObserver crashes app (swift 3) 【发布时间】: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 在初始化后为空。因此,请验证此行至少运行一次,并且您确实收到了一个对象。
【参考方案1】:
你必须解开self.timeObserver
。
removeTimeObserver()
接受了Any
对象,但你传入了Any?
,这会导致崩溃。
【讨论】:
以上是关于AVPlayer removeTimeObserver 崩溃应用程序(swift 3)的主要内容,如果未能解决你的问题,请参考以下文章