KVO Observing AVPlayer вызывает сбой приложения в iOS 13 - PullRequest
1 голос
/ 24 октября 2019

Я получаю странный сбой, связанный с наблюдением AVPlayer.timeControlStatus в iOS 13. Это не происходит в 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. Откройте ViewController с помощью AVPlayer и начните наблюдение.
  2. Вернитесь кпредыдущий ViewController.
  3. Отключить приложение от фона.
  4. Вернуть приложение на передний план.
  5. Сбой: Thread 1: EXC_BAD_ACCESS (code=1, address=0x2b1bc593c)

Вот стек вызововсбоя.

enter image description here

Похоже, что AVPlayer пытается отправить уведомление наблюдателю, который уже должен быть аннулирован и освобожден из памяти. У кого-нибудь была похожая проблема?

1 Ответ

0 голосов
/ 24 октября 2019

viewWillDisappear будет лучшим местом для удаления наблюдения чувак.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...