Я получаю странный сбой, связанный с наблюдением 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
}
Сбой происходит в следующей ситуации:
- Откройте ViewController с помощью AVPlayer и начните наблюдение.
- Вернитесь кпредыдущий ViewController.
- Отключить приложение от фона.
- Вернуть приложение на передний план.
- Сбой:
Thread 1: EXC_BAD_ACCESS (code=1, address=0x2b1bc593c)
Вот стек вызововсбоя.
![enter image description here](https://i.stack.imgur.com/lqQTb.png)
Похоже, что AVPlayer пытается отправить уведомление наблюдателю, который уже должен быть аннулирован и освобожден из памяти. У кого-нибудь была похожая проблема?