我使用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;
}
但NetworkAcitivtyIndicator仍在Status Bar
中加载,我想停止它。如何解决?
答案 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];
}