我在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
有人遇到过类似的问题吗?
发布于 2019-01-10 10:26:06
在添加观察者之前,请确保删除了添加的观察者。
同样,创建两个函数来添加和移除观察者,如
增加观察员
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)
}在调用removeObserver()之前,一定要调用addObserver()
编码愉快!
https://stackoverflow.com/questions/54126412
复制相似问题