iPhone内存泄漏问题

时间:2011-09-07 15:00:36

标签: iphone objective-c memory-leaks

我的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'

我确实尝试自动释放“moviePlayerController”,然后我尝试释放它。两种情况下内存泄漏都解决了,但视频没有在iPhone上播放!奇怪请帮帮忙。

2 个答案:

答案 0 :(得分:4)

警告是正确的:您正在泄漏MPMoviePlayerController实例。但正如您所发现的那样,如果不保持控制器的存在,就无法有效地使用视图。

解决方案是将MPMoviePlayerController存储到类中的ivar / property中,然后在完成视图后将其释放(例如在viewDidUnloaddealloc中)。

答案 1 :(得分:0)

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

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

然后在您的.m文件中@synthesize moviePlayerController;

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

最后将self.moviePlayerController = nil[moviePlayerController release]添加到您的viewDidUnloaddealloc