私のプロジェクトでは ARC を使用しています。ボタンを押したときにムービーを再生したい。現在、私のコードはムービー プレーヤーを起動し、ムービーを適切に再生します。MPMoviePlayerController ビューが閉じられると、元のビューに戻ります。元のビューで戻るボタンを押すと、割り当てが解除されず、メモリに残ります。ボタンを押してムービーを再生しないと、適切に割り当てが解除されます。
.h で宣言
@property (strong,nonatomic) MPMoviePlayerViewController * moviePlayerController;
ムービーを .m で表示するには:
-(IBAction)playMovie:(NSURL *) theURL
{
NSURL *fileURL = [[NSURL alloc] initWithString:movieTrailerURL];
self.moviePlayerController = [[MPMoviePlayerViewController alloc] initWithContentURL:fileURL];
[moviePlayerController.moviePlayer prepareToPlay];
//moviePlayerController.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlaybackComplete:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
[self presentViewController:moviePlayerController animated:YES completion:nil];
}
終了または完了ボタンが押されてムービーが閉じられると、これが呼び出されます
- (void)moviePlaybackComplete:(NSNotification *)notification
{
NSLog(@"I am in movie playback complete!!!");
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
// [moviePlayerController.moviePlayer pause];
// moviePlayerController.moviePlayer.initialPlaybackTime = -1;
// [moviePlayerController.moviePlayer stop];
// moviePlayerController.moviePlayer.initialPlaybackTime = -1;
//[moviePlayerController.moviePlayer.view removeFromSuperview];
// [moviePlayerController.view removeFromSuperview];
// [moviePlayerController.moviePlayer release];
}
親ビューが解放され、割り当てが解除されるように、moviePlayerController をメモリから解放するために、コメントアウトされた部分のすべての組み合わせを試しました。