我的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上播放!奇怪请帮帮忙。
答案 0 :(得分:4)
警告是正确的:您正在泄漏MPMoviePlayerController
实例。但正如您所发现的那样,如果不保持控制器的存在,就无法有效地使用视图。
解决方案是将MPMoviePlayerController
存储到类中的ivar / property中,然后在完成视图后将其释放(例如在viewDidUnload
和dealloc
中)。
答案 1 :(得分:0)
尝试在标头文件中添加MPMoviePlayerController *moviePlayerController
然后@property (nonatomic, retain) MPMoviePlayerController *moviePlayerController;
然后在您的.m文件中@synthesize moviePlayerController;
然后尝试self.moviePlayerController = [[[MPMoviePlayerController alloc] initWithContentURL:fileURL] autorelease];
最后将self.moviePlayerController = nil
和[moviePlayerController release]
添加到您的viewDidUnload
和dealloc
。