第一次视频是播放器,内存使用量是36.6MB,现在是第二次:
在这里,它已经跳到了58.2MB,并且每次回去再播放视频或者播放不同的视频时,它都会不断增加.
我试过使用仪器与泄漏,但还没有能够弄清楚它有什么问题.
整个控制器文件code.
//编辑
-(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");}解决方法 问题在于IDleTimer.当在IDleTimer上调用invalIDate方法时,它不会同步使定时器无效,而是等待下一个tick(不确定但是等待一段时间),然后才能使其释放.
现在,同时,IDleTimer引用被设置为nil.在定时器的下一个勾号上,引用丢失,内存永远不会被释放,引用传播一直到VIEwController,它的对象都不会被释放.
总结以上是内存溢出为你收集整理的iOS内存泄漏,AVPlayer永远不会被释放全部内容,希望文章能够帮你解决iOS内存泄漏,AVPlayer永远不会被释放所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)