【发布时间】:2014-09-11 22:01:47
【问题描述】:
我正在使用 MPMoviePlayerController 播放在线视频(我正在使用 ARC),代码如下:
_moviePlayer = [[ZXMPMoviePlayerController alloc] init];
_moviePlayer.view.frame = CGRectMake(0, 100, 320, 320);
_moviePlayer.controlStyle = MPMovieControlStyleNone;
[self.view addSubview:_moviePlayer.view];
NSString *sourcePathStr = @""; //video url
_moviePlayer.contentURL = [NSURL URLWithString:sourcePathStr];
_moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
[_moviePlayer prepareToPlay];
[_moviePlayer play];
ZXMPMoviePlayerController 是 MPMoviePlayerController 的子类,用于观察 _moviePlayer 的释放。
现在我确定 _moviePlayer 在我离开这个 VC 后被释放(因为我在 ZXMPMoviePlayerController 的 dealloc 方法中打印了日志),但我的应用程序的内存使用率仍然很高,这是一个测试演示,除了movieplayer,vc是干净的。 我想它一定是_moviePlayer的东西还在内存中,就像其他东西的缓存一样,我不知道......
有什么想法吗?帮助...
在.h中
@interface ZXMPMoviePlayerController : MPMoviePlayerController
@end
在.m #import "ZXMPMoviePlayerController.h"
@implementation ZXMPMoviePlayerController
- (void)dealloc
{
NSLog(@"%s",__FUNCTION__);
}
@end
【问题讨论】:
-
您是否在项目中启用了“NSZombie”(在“EditSchemes”下)?
-
@Student 是的,我是。我发现是否启用NSZombie对内存使用影响不大。
-
好的,然后禁用它,然后再次检查。有关更多信息,请在此处查看我的答案stackoverflow.com/questions/25521856/…
-
@Student 是的,内存比以前低了,但在movieplayer释放后仍然无法释放。我对仪器不太熟悉,我怎么知道到底是什么保留了这些记忆?活字节,负责任的调用者或类别,我找不到任何线索...谢谢!
标签: ios objective-c memory mpmovieplayercontroller