我要在UICollectionViewCell
中添加一个具有AVPlayer的观察者,以获取播放项目的持续时间。
addObserver(self, forKeyPath: #keyPath(player.currentItem.duration), options: [.new, .initial], context: &playerViewControllerKVOContext)
在deinit方法中删除观察者。
removeObserver(self, forKeyPath: #keyPath(player.currentItem.duration), context: &playerViewControllerKVOContext)
随机获取异常
KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED
有人遇到类似的问题吗?
答案 0 :(得分:0)
在添加观察者之前,请确保已删除添加的观察者。
同样,创建两个函数来添加和删除观察者,如
添加观察者
func addObserver() {
addObserver(self, forKeyPath: #keyPath(player.currentItem.duration), options: [.new, .initial], context: &playerViewControllerKVOContext)
}
删除观察者
func removeObservers() {
removeObserver(self, forKeyPath: #keyPath(player.currentItem.duration), context: &playerViewControllerKVOContext)
}
在调用addObserver()之前,请确保先调用removeObserver()
编码愉快!