Iphone MPMoviePlayerViewController内存问题

Iphone MPMoviePlayerViewController内存问题,iphone,ipad,sdk,Iphone,Ipad,Sdk,我对iPad iOS 4.2上的MPMoviePlayerViewController有问题。应用程序播放视频,但当视频停止时,内存不会释放。 要创建视频播放器,我使用以下代码: MPMoviePlayerViewController * videoPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:articleUrl]; [videoPlayer moviePlayer].movieSourceT

我对iPad iOS 4.2上的MPMoviePlayerViewController有问题。应用程序播放视频,但当视频停止时,内存不会释放。 要创建视频播放器,我使用以下代码:


    MPMoviePlayerViewController * videoPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:articleUrl];
    [videoPlayer moviePlayer].movieSourceType = MPMovieSourceTypeFile;
    [videoPlayer moviePlayer].controlStyle = MPMovieControlStyleDefault;
    [videoPlayer moviePlayer].scalingMode = MPMovieScalingModeAspectFit;
    [videoPlayer moviePlayer].fullscreen = NO;

    self.playerViewController = videoPlayer;
    [videoPlayer release];
    videoPlayer = nil;

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(movieFinishedCallback:) 
                                                 name:MPMoviePlayerPlaybackDidFinishNotification 
                                               object:[playerViewController moviePlayer]];

    MPMoviePlayerController *player = [playerViewController moviePlayer];

    CGRect playerFrame = CGRectMake(20, 20, self.view.frame.size.width - 40, self.view.frame.size.height - 40); 
    player.view.frame = playerFrame;
    [self.view addSubview:player.view];
    [player play];
还有电影FinishedCallback:方法代码:


    - (void) movieFinishedCallback:(NSNotification*) aNotification {
    MPMoviePlayerController *player = [aNotification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self 
                                                    name:MPMoviePlayerPlaybackDidFinishNotification 
                                                  object:player];
    [player.view removeFromSuperview];
    [player release];
    player = nil;

}

有人能帮我吗?我已经阅读了很多与此问题相关的主题,但还没有找到解决方案。

您的代码看起来不错-您的版本与您的保留版本相匹配,等等

您是否在仪器中运行过此功能,即它是否确实存在泄漏?您如何知道内存没有被释放

只要视频播放框架在内存不足时释放内存(即收到内存不足警告),它就可以将视频缓存起来。尝试在模拟器中运行它并模拟内存警告-我打赌内存会被释放

此外,您不知道它是否会在任何时候自动释放


在遇到内存警告之前,我不会担心这个问题。在此之前,我假设视频框架知道它在做什么

这不会回答您的问题,但您的代码中有一个错误-表示
播放器发布
的行应该是
self.videoPlayerController=nil
。否则,你释放了播放器,但保留了指向它的指针(非常糟糕!)我已经运行了仪器。如果视频停止,分配的内存大小不会减少。我的意思是,如果在播放视频期间分配的内存大小是20 Mb,那么在视频结束后,分配的内存大小仍然是20 Mb。这仍然不一定是问题-如果应用程序在出现内存不足警告时释放内存,那么就可以了。尝试在模拟器中发送内存警告,看看会发生什么。