iPhone内存泄漏问题

3

我在我的iPhone应用程序中有以下代码,警告内存泄漏!

这是我的代码:

-(IBAction)playVideo:(id)sender  {  
     NSString *filepath   =   [[NSBundle mainBundle] pathForResource:@"test" 
                                                              ofType:@"mov"];  
     NSURL    *fileURL    =   [NSURL fileURLWithPath:filepath];  
     MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
    [moviePlayerController.view setFrame:CGRectMake(38, 100, 250, 163)];  
    [self.view addSubview:moviePlayerController.view];  
    moviePlayerController.fullscreen = YES;  
    [moviePlayerController play];  
} 

这是我收到的错误消息: 可能存在内存泄漏问题,该对象在第37行被分配并存储在'moviePlayerController'中 我尝试过使用autorelease释放"moviePlayerController",然后尝试释放它。两种情况下,内存泄漏问题都得到了解决,但是视频无法在iPhone上播放!这很奇怪,请帮忙看看。

可能是如何释放MPMoviePlayerController?的重复问题。 - albertamg
2个回答

4
警告是正确的:您正在泄漏 MPMoviePlayerController 实例。但正如您发现的那样,如果不保留控制器,您将无法有效地使用该视图。
解决方案是将 MPMoviePlayerController 存储到类中的 ivar/property 中,在使用其视图后(例如在 viewDidUnloaddealloc 中),释放它。

0

尝试在您的头文件中添加MPMoviePlayerController *moviePlayerController

然后是@property (nonatomic, retain) MPMoviePlayerController *moviePlayerController;

接着在您的.m文件中@synthesize moviePlayerController;

然后尝试self.moviePlayerController = [[[MPMoviePlayerController alloc] initWithContentURL:fileURL] autorelease];

最后在viewDidUnloaddealloc中添加self.moviePlayerController = nil[moviePlayerController release]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接