我的电影播放器仅在 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,但是当我单击完成按钮时它总是会泄漏。
任何帮助将不胜感激。谢谢。