Hinzufügen und Entfernen des Beobachters von mehreren AVPlayerItem in UITableViewCell

Ich versuche, eine Tabellenansicht zu erstellen, die mehrere Videos mit @ wiedergibAVPlayer undAVPlayerItem und ich musste zu jedem @Observer hinzufügAVPlayerItem so kann ich die PlaybackLikelyToKeepUp-Eigenschaft verfolgen

was ich versuchte und fehlschlug, fügt den Beobachter hinzu, nachdem das @ eingestellt worden iAVPlayerItem und entfernen Sie es in derdeinit desUITableViewCell aber da die Zellen nie freigegeben werden, sondern in die Warteschlange gestellt werden, funktioniert dies nicht und ich erhalte diesen Fehler

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

Nach der Suche habe ich mir dieses @ ausgedac

Ich sollte keine Beobachter auf @ hinzufügen oder entfernUITableViewCell aber ich musste, weil der Spieler Artikel in der Zelle Unterklasse gemacht wird Der beste Weg, um mit Beobachtern umzugehen, sind die Methoden von 'UITableViewDelegate'Adding inwillDisplayCell und entfernen indidEndDisplayingCell

aber auch das geht in meinem fall nicht weilAVPlayerItem braucht Zeit, um initialisiert zu werden

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)
}

so wird der Beobachter nicht in das @ aufgenommwillDisplayCell aber das Entfernen des Observers wird aufgerufen und verursacht einen Laufzeitfehler mit

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

wenn jemand weiß, wie man das erreicht, würde ich mich freuen zu wissen? Vielen Dan

Antworten auf die Frage(4)

Ihre Antwort auf die Frage