Iphone MPMoviePlayerViewController内存问题
我对iPad iOS 4.2上的MPMoviePlayerViewController有问题。应用程序播放视频,但当视频停止时,内存不会释放。 要创建视频播放器,我使用以下代码:Iphone MPMoviePlayerViewController内存问题,iphone,ipad,sdk,Iphone,Ipad,Sdk,我对iPad iOS 4.2上的MPMoviePlayerViewController有问题。应用程序播放视频,但当视频停止时,内存不会释放。 要创建视频播放器,我使用以下代码: MPMoviePlayerViewController * videoPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:articleUrl]; [videoPlayer moviePlayer].movieSourceT
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。这仍然不一定是问题-如果应用程序在出现内存不足警告时释放内存,那么就可以了。尝试在模拟器中发送内存警告,看看会发生什么。