Добавить и удалить наблюдателя из нескольких AVPlayerItem на UITableViewCell

я пытаюсь сделать табличное представление, которое воспроизводит несколько видео сAVPlayer а такжеAVPlayerItem и мне нужно было добавитьObserver к каждомуAVPlayerItem так что я могу отслеживать свойство playLikelyToKeepUp

то, что я пытался и не смог добавить наблюдателя после установкиAVPlayerItem и удалив его вdeinit изUITableViewCell но так как клетки никогда не освобождаются, а удаляются, так что это не сработает, и я получу эту ошибку

An instance 0x14eedebc0 of class AVPlayerItem was 
deallocated while key value observers were still registered with it.

После поиска я придумал это

Я не должен добавлять или удалять наблюдателей наUITableViewCell но я должен был, потому что элемент игрока сделан в подклассе ячейкиЛучший способ обработки наблюдателя - это методы UITableViewDelegate.Добавление вwillDisplayCell и удаление вdidEndDisplayingCell

но даже это не работает в моем случае, потому чтоAVPlayerItem требуется время для инициализации

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TableViewCell
        cell.setUpPLayer()
        return cell
}

override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        let cell = cell as! TableViewCell
        if cell.Player == nil {
            self.addObserversToCell(cell)
        }
}

override func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        let cell = cell as! TableViewCell
        self.removeMyObserversFromCell(cell)
}

поэтому наблюдатель не будет добавлен вwillDisplayCell но удаление наблюдателя будет вызвано и вызовет ошибку времени выполнения с

'Cannot remove an observer <AVFPlayer.TableViewCell 0x13cf1e9b0> for
the key path "playbackLikelyToKeepUp"  
<AVPlayerItem0x13cf31860> because it is not registered as an observer.'

если кто-нибудь знает, как этого добиться, я был бы рад узнать? Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос