簡體   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