繁体   English   中英

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

[英]KVO Observing AVPlayer causes App crash in iOS 13

我遇到了与在 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)
}

而这里 function 停止观察。 它在 ViewController deinit中调用。

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

崩溃发生在以下情况:

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

这是崩溃的调用堆栈。

在此处输入图像描述

看起来 AVPlayer 正在尝试向观察者发送通知,该观察者应该已经失效并从 memory 释放。 有没有人有类似的问题?

viewWillDisappear将是删除观察的更好地方,伙计。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM