私のアプリの1つで、ファイルを再生するために以下のコードを使用してlocal.soiamからビデオファイルを再生したいと思います。
-(IBAction)playMovie{
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Myvideo" ofType:@"mov"]];
MPMoviePlayerController *moviePlayer=[[[MPMoviePlayerController alloc]initWithContentURL:url]autorelease];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];
moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
moviePlayer.shouldAutoplay = YES;
[self.view addSubview:moviePlayer.view];
[moviePlayer setFullscreen:YES animated:YES];
//[moviePlayer release];
}
-(void) moviePlayBackDidFinish:(NSNotification*)notification {
MPMoviePlayerController *moviePlayer = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
if ([moviePlayer
respondsToSelector:@selector(setFullscreen:animated:)])
{
[moviePlayer.view removeFromSuperview];
}
[moviePlayer release];
}
上記のコードの分析またはプロファイルを実行すると、2か所で警告の潜在的なリークが発生していることがわかります。
[moviePlayer setFullscreen:YES animated:YES];
//[moviePlayer release];
もう1つはリークがこの部分にあります
{
[moviePlayer.view removeFromSuperview];
}
[moviePlayer release]
コードの最初にNSURL行を自動解放しようとしても、自動解放リークは発生しませんが、ビデオは再生されません。この問題を解決する方法は誰か助けてくれますか?