完全破坏AVPlayer

时间:2014-09-10 04:30:55

标签: ios avplayer

我使用AVPlayer在iOS中播放youtube视频,我创建了VideoViewController来管理播放视频。

当VideoViewController弹出NavigationController时,我实现了

- (void)viewDidDisappear:(BOOL)animated {
 [self.player removeObserver:self forKeyPath:kCurrentItemKey context:MyStreamingMovieViewControllerCurrentItemObservationContext];
    [self.player removeObserver:self forKeyPath:kRateKey context:MyStreamingMovieViewControllerRateObservationContext];
    [self removePlayerTimeObserver];
    self.playerLayerView = nil;
    self.playerItem = nil;
    self.player = nil;
}

但NetworkAcitivtyIndi​​cator仍在Status Bar中加载,我想停止它。如何解决?

2 个答案:

答案 0 :(得分:0)

您自己管理活动指标了吗?如果是这样,请在pop方法中插入此行:[UIApplication sharedApplication].networkActivityIndicatorVisible = NO 或者在设置参考nil之前尝试停止玩家。

答案 1 :(得分:0)

使用ARC时,具有nil值的对象将在它们被清零的块或范围的末尾释放。尽管AVPlayer是由类集群(即许多不同的对象)生成的对象,但您不必单独释放所有对象, 只是玩家。

所以,这一行将释放玩家及其他所有内容,包括资产和/或玩家项目:

[self.player replaceCurrentItemWithPlayerItem:nil];

如果由于一些奇怪的原因,你不能等到方法结束时释放播放器(可能它之前是一个长时间运行的迭代器或者由一个C-inline块变量保留),包含该行@autorelease池:

@autorelease {
[self.player replaceCurrentItemWithPlayerItem:nil];
}
相关问题