2011-09-07 289 views
3

我在我的iPhone應用程序中有以下代碼,警告內存泄漏!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上播放!奇怪請幫忙。

+0

可能重複的[如何釋放MPMoviePlayerController?](http://stackoverflow.com/questions/695307/how-to-release-mpmovieplayercontroller) – albertamg

回答

4

警告是正確的:您正在泄漏MPMoviePlayerController實例。但是正如你發現的那樣,如果不保持控制器周圍的環境,你就無法有效地使用視圖。

的解決方案是將MPMoviePlayerController存儲到你的班上伊娃/屬性,然後釋放它,當你與它的視圖中完成(例如,在viewDidUnloaddealloc)。

+0

這確實奏效,謝謝! – HardCode

0

嘗試在你的頭文件

加入MPMoviePlayerController *moviePlayerController然後@property (nonatomic, retain) MPMoviePlayerController *moviePlayerController;

然後在.m文件@synthesize moviePlayerController;

然後嘗試self.moviePlayerController = [[[MPMoviePlayerController alloc] initWithContentURL:fileURL] autorelease];

最後加入self.moviePlayerController = nil[moviePlayerController release]viewDidUnloaddealloc