0

メディアプレーヤーを開いてビデオを再生したいという点で、1つのiPadアプリケーションを作成しています。このために、ViewDidLoad()メソッドで1つのボタンを作成します。ベローは私のコードです。

- (void)viewDidLoad
{
    [super viewDidLoad]
    self.view.backgroundColor = [[[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"1.png"]] autorelease];

    m_btn2000 = [[UIButton buttonWithType:UIButtonTypeCustom] autorelease];
    m_btn2000.frame = CGRectMake(180, 330, 130, 200);
   [m_btn2000 setImage:[UIImage imageNamed:@"2.png"] forState:UIControlStateNormal];
    m_btn2000.clipsToBounds = YES;
   [m_btn2000 addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
   [self.view addSubview:m_btn2000];
}

以下は私のボタンクリックメソッドコードです:

- (void)btnClicked:(id)sender
{
    NSString *filePath1 = [[NSBundle mainBundle] pathForResource:@"test_video" ofType:@"m4v"];
    NSURL *fileURL = [NSURL fileURLWithPath:filePath1];
    m_moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
    m_moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
   [m_moviePlayer.view setFrame:CGRectMake(0, 0, 1026, 748)];
   [self.view addSubview:m_moviePlayer.view];
   [m_moviePlayer play];
}

ボタンをクリックしようとすると、EXC_BAD_ACCESSエラーが発生します。しかし、ボタンをクリックしたメソッドでViewDidLoad()メソッドを挿入するコード全体を上に配置すると、プレーヤーで適切な方法でビデオが再生されることに気付きました。

4

1 に答える 1

1

理由は次のとおりです。+(ファクトリメソッド)を使用してボタンを作成し、autoreleaseメッセージを送信しています。

この行を次のように変更する必要があります。
m_btn2000 = [[UIButton buttonWithType:UIButtonTypeCustom] autorelease];

  m_btn2000 = [UIButton buttonWithType:UIButtonTypeCustom];
于 2012-04-10T11:06:01.867 に答える