在iOS AVPlayer中,似乎缺少addPeriodicTimeObserverForInterval

S'r*_*Cat 3 xcode ios avplayer swift

我正在尝试设置AVPlayer.addPeriodicTimeObserverForInterval().有人用过这个吗?

我正在使用Xcode 8.1,Swift 3

Yuc*_*ong 7

接受的答案使您觉得可以将返回值分配给局部变量并忽略它.但根据该文件,实际上重要的是强烈提及返回值和removeTimeObserver(_ :).

只要您希望播放器调用时间观察器,您必须保持对返回值的强引用.每次调用此方法都应该与removeTimeObserver(:)的相应调用配对.在不调用removeTimeObserver( :)的情况下释放observer对象将导致未定义的行为.

所以我会这样做:

if let ob = self.observer {
    player.removeTimeObserver(ob)
}

let interval = CMTimeMake(1, 4) // 0.25 (1/4) seconds
self.observer = player.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main) { [weak self] time in
    ...
}
Run Code Online (Sandbox Code Playgroud)


Raj*_*jat 3

检查此func addPeriodicTimeObserver(forInterval 间隔: CMTime, 队列: DispatchQueue?, 使用块: @escaping (CMTime) -> Void) -> Any

例如,它也在文档中检查此代码片段

let timeObserverToken = player.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main) { [unowned self] time in 
}
Run Code Online (Sandbox Code Playgroud)

参考自这里