4

如果我使用 KVO 来观察我的播放器项目,如下所示:

    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url];
    [playerItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:MyClassKVOContext];
    [playerItem addObserver:self forKeyPath:@"playbackBufferEmpty" options:NSKeyValueObservingOptionNew context:MyClassKVOContext];
    [playerItem addObserver:self forKeyPath:@"playbackLikelyToKeepUp" options:NSKeyValueObservingOptionNew context:MyClassKVOContext];
    [playerItem addObserver:self forKeyPath:@"loadedTimeRanges" options:NSKeyValueObservingOptionNew context:MyClassKVOContext];

两个问题:

1) 项目播放完毕后,我是否需要移除我的观察者?(即在AVPlayerItemDidPlayToEndTimeNotification

2)如果我打电话[_avQueuePlayer removeAllItems],它是否也会删除每个项目的观察者?

4

1 回答 1

1

使您的播放器对象(AVPlayerItem *playerItem)全局设置并设置其属性并合成它。

1) 项目播放完毕后,我是否需要移除我的观察者?(即在 AVPlayerItemDidPlayToEndTimeNotification 中)

是的,当您即将离开该播放器正在播放的视图控制器时,您需要删除所有观察者。不是在玩完之后。

2)如果我调用 [_avQueuePlayer removeAllItems] 它是否也会删除每个项目的观察者?

是的,它删除了为该全局变量设置的所有观察者。

于 2014-09-16T10:19:57.950 回答