我在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];下面是movieFinishedCallback:方法代码:
- (void) movieFinishedCallback:(NSNotification*) aNotification {
MPMoviePlayerController *player = [aNotification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:player];
[player.view removeFromSuperview];
[player release];
player = nil;
}有人能帮我吗?我已经阅读了很多与这个问题相关的主题,但还没有找到解决方案。
发布于 2010-12-17 00:56:56
你的代码看起来不错--你的版本与你的保留相匹配,等等。
你在Instruments中运行过这个吗--也就是说,它肯定是一个漏洞吗?你怎么知道内存没有被释放?
视频回放框架让你的视频保持缓存没有错,只要它在你运行时释放内存(例如,得到一个内存不足的警告)。试着在模拟器中运行它并模拟一个内存警告--我打赌内存会被释放。
此外,你也不知道它是否会在任何时候自动发布。
我不会担心这个问题,直到你遇到内存警告。在此之前,我只是假设视频框架知道它在做什么!
https://stackoverflow.com/questions/4462471
复制相似问题