1

私のプロジェクトでは 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 をメモリから解放するために、コメントアウトされた部分のすべての組み合わせを試しました。

4

1 に答える 1