ムービー プレーヤーでメモリ リークが発生するのは、iPad でのみ、[完了] ボタンをクリックしたときだけです。ムービーが最後まで再生されると、適切にクリーンアップされます。プレイコードは次のとおりです。
mViewPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[self movieURL:@"mymovie"]];
[self.parentViewController presentModalViewController:mViewPlayer animated:YES];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(exitedFullscreen:) name:MPMoviePlayerPlaybackDidFinishNotification object:[mViewPlayer moviePlayer]];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(exitedFullscreen:) name:MPMoviePlayerDidExitFullscreenNotification object:[mViewPlayer moviePlayer]];
そして、ここにクリーンアップコードがあります:
- (void)exitedFullscreen:(NSNotification*)aNotification
{
MPMoviePlayerController *player = [aNotification object];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerDidExitFullscreenNotification object:player];
[self.parentViewController dismissModalViewControllerAnimated:YES];
NSLog(@"retainCount theMovie: %i", [mViewPlayer retainCount]);
player.initialPlaybackTime = -1;
[player pause];
[player stop];
NSLog(@"retainCount theMovie: %i", [mViewPlayer retainCount]);
[player release];
player = nil;
// [mViewPlayer release];
mViewPlayer = nil;
}
正常に終了した場合と「完了」ボタンをクリックした場合の両方で、retainCount は 3 です。
MPMoviePlayerController も同じ結果で使用してみました。準備された再生と 10 の異なるメソッドを使用して MPMoviePlayer*Controller を呼び出してみましたが、[完了] ボタンをクリックすると常にリークします。
どんな助けでも大歓迎です。ありがとう。