iOS 中的内存泄漏,AVPlayer 永远不会被释放

2024-06-19

我使用了 AVPlayerDemo 示例苹果文档 https://developer.apple.com/library/ios/samplecode/AVPlayerDemo/Introduction/Intro.html并在其上编写了我自己的 UI 来播放从 UITableViewController 中选择的视频。现在的问题是,这里某个地方存在内存泄漏,但我找不到。问题是 AVPlayer 对象没有被释放,我猜这是因为每次按后退按钮并选择要播放的新视频时,应用程序消耗的总内存都会出现巨大的跳跃,如下所示:

第一次播放视频,内存占用为36.6MB,现在第二次播放:

这里它已经跃升至 58.2MB,并且每次我返回并再次播放该视频或播放不同的视频时,它都会不断增加。

我尝试过使用带有泄漏的仪器,但尚未弄清楚它出了什么问题。

这是整个控制器文件code http://pastebin.com/RYU9M9Tv.

//EDIT

-(void) viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];

    if(_player.rate == 1.0){
        [_player pause];
    }

    [idleTimer invalidate];

    if(mTimeObserver){
        [_player removeTimeObserver:mTimeObserver];
        mTimeObserver = nil;
    }
    [_playerItem removeObserver:self forKeyPath:kStatusKeyT];
    [[NSNotificationCenter defaultCenter] removeObserver:self                                                 name:AVPlayerItemDidPlayToEndTimeNotification object:_playerItem];


    _player = nil;
    _playerItem = nil;
    idleTimer = nil;
    _tapGestureRecognizer = nil;
}

-(void) dealloc
{
    NSLog(@"DEALLOCING");
}

我遇到了和你一样的问题,但我通过调用它来修复内存泄漏viewDidDisappear:

self.avPlayer?.replaceCurrentItem(with: nil)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 中的内存泄漏,AVPlayer 永远不会被释放 的相关文章

随机推荐