MPMoviePlayerController发布,但内存使用率仍然很高

时间:2014-09-11 07:09:39

标签: ios objective-c memory mpmovieplayercontroller

我正在使用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];

如果观察到_moviePlayer的重新分配,ZXMPMoviePlayerController是MPMoviePlayerController的子类。

现在我确定_moviePlayer被释放了(因为我打印了登录ZXMPMoviePlayerController的dealloc方法)我离开这个VC(VC也被解除分配了。),但我的应用程序的内存使用量仍然很高,这是一个测试演示,除电影播放器​​外,vc是干净的。 我认为它必须是_moviePlayer仍然在内存中的东西,比如其他东西的缓存,我不知道......

有什么想法吗?帮助...

in .h

@interface ZXMPMoviePlayerController : MPMoviePlayerController

@end

在.m     #import“ZXMPMoviePlayerController.h”

@implementation ZXMPMoviePlayerController


- (void)dealloc
{
    NSLog(@"%s",__FUNCTION__);
}

@end

2 个答案:

答案 0 :(得分:2)

您好,请确保使用@autoreleasepool释放内存包装所有代码。在dealloc你应该清理你的记忆。使用dealloc方法时,应检查是否释放所有对象以避免内存泄漏。

- (void)dealloc
{
   [moviePlayer_ release];
    moviePlayer_ = nil;
}

这应该如何调用视频播放器。

@autoreleasepool
{

    [_moviePlayer release];
    _moviePlayer = nil;

    _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];


}

答案 1 :(得分:0)

取消选中Edit Scheme下的Enable Zombie Objects选项。然后再试一次。