[KVO观察AVPlayer导致iOS 13中的应用程序崩溃

问题描述 投票:0回答:1

我在iOS 13中看到与观察AVPlayer.timeControlStatus相关的奇怪崩溃,这在iOS 12中没有发生。

这是设置观察者的代码:

// stored in View Controller 
private var playerStateObservation: NSKeyValueObservation?
@objc var player : AVPlayer?

// setting KVO after initialising AVPLayer
playerStateObservation = observe(\.player?.timeControlStatus) { [weak self] (object, change) in
    let playing = self?.player?.timeControlStatus == .playing
    self?.showPlayIcon(playing)
}

这里是停止观察的功能。在ViewController deinit中调用。

func cleanUpObserver() {
    playerStateObservation?.invalidate()
    playerStateObservation = nil
}

在以下情况下发生崩溃:

  1. 使用AVPlayer打开ViewController并开始观察。
  2. 返回上一个ViewController。
  3. 将应用程序后台关闭。
  4. 将应用程序带回前台。
  5. 崩溃:Thread 1: EXC_BAD_ACCESS (code=1, address=0x2b1bc593c)

这里是崩溃的调用堆栈。

enter image description here

看起来AVPlayer正在尝试向应该已经无效并从内存中释放的观察者发送通知。有人遇到过类似的问题吗?

ios swift avfoundation avplayer ios13
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.