проблема утечки памяти iPhone - PullRequest
3 голосов
/ 07 сентября 2011

У меня в приложении для 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 ]

4 голосов
/ 07 сентября 2011

Предупреждение правильное: вы пропускаете экземпляр MPMoviePlayerController. Но, как вы обнаружили, вы не можете эффективно использовать вид, не удерживая контроллер вокруг себя.

Решение состоит в том, чтобы сохранить MPMoviePlayerController в свойстве ivar / вашего класса, а затем освободить его, когда вы закончите с его представлением (например, в viewDidUnload и dealloc).

0 голосов
/ 07 сентября 2011

попробуйте добавить MPMoviePlayerController *moviePlayerController в заголовочный файл

, затем @property (nonatomic, retain) MPMoviePlayerController *moviePlayerController;

, затем в свой файл .m @synthesize moviePlayerController;

, затем попробуйте self.moviePlayerController = [[[MPMoviePlayerController alloc] initWithContentURL:fileURL] autorelease];

наконец добавьте self.moviePlayerController = nil и [moviePlayerController release] к вашим viewDidUnload и dealloc.

...