2012-04-10 64 views
0

我正在创建一个iPad应用程序,我想打开媒体播放器播放视频。为此,我在ViewDidLoad()方法中创建一个按钮。贝娄是我的代码。视频播放器给出错误(EXC_BAD_ACCESS)

- (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()方法它播放适当的方式播放视频。

回答

1

原因是:您正在使用+(工厂方法)创建按钮,并且您正在发送autorelease消息。

你需要这条线从改变:
m_btn2000 = [[UIButton buttonWithType:UIButtonTypeCustom] autorelease];

m_btn2000 = [UIButton buttonWithType:UIButtonTypeCustom]; 
+0

最好的之一......解决。你能否就此简单阐述一下? – 2012-04-10 11:10:21

+0

+1,它(按钮对象)已经由工厂方法autoreleased了。 – Ilanchezhian 2012-04-10 11:11:35

+0

好的......谢谢.. – 2012-04-10 11:14:05