2011-03-16 135 views
2

我试图通过单击按钮启动电影。当我点击电影播放器​​出现并工作正常。电影一直播放到最后,电影播放器​​消失。它消失后,我的应用程序崩溃...当我的电影完成播放时,应用程序崩溃

我用在标签栏的应用我的视图控制器,此代码:

- (void)moviePlayBackDidFinish:(NSNotification *) aNotification{ 

    MPMoviePlayerController *player = [aNotification object]; 
    [player setFullscreen:NO animated:YES]; 
    [player.view removeFromSuperview]; 
    [player stop]; 
    player.initialPlaybackTime = -1.0; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player]; 
    [player release]; 
    player=nil; 
} 

- (IBAction)playVideo:(UIButton *)playButton{ 
    NSString *url = [[NSBundle mainBundle] pathForResource:@"Teaser 04" ofType:@"mov"]; 
    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:url]]; 
    player.shouldAutoplay = YES; 
    player.view.frame = CGRectMake(0., 44., self.view.bounds.size.width, self.view.bounds.size.height-44); 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:player]; 
    [self.view addSubview:player.view]; 
    [player play]; 
} 

我不知道我做错了。我只是想设置一个按钮,开始播放视频,并在视频结束时,MoviePlayer查看消失,应用回到我最初的.xib

谢谢您的帮助

回答

1

我找到了解决办法,我不知道这是否是最好的,但什么我想它的工作:

- (void)movieFinishedCallBack:(NSNotification *) aNotification{ 
MPMoviePlayerController *player = [aNotification object]; 
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player]; 
[player.view removeFromSuperview]; 
[player stop]; 
[player release]; 

}

- (IBAction)playVideo:(UIButton *)playButton{ 
NSString *url = [[NSBundle mainBundle] pathForResource:@"Teaser 04" ofType:@"mov"]; 
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:url]]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallBack:) name:MPMoviePlayerPlaybackDidFinishNotification object:player]; 
player.view.frame = CGRectMake(0, 0, 950, 600); 
[self.view addSubview:player.view]; 
[player play]; 

}

0

我可能是错的,但我的猜测是玩家会在回溯到moviePlayBackDidFinish的地方的某个地方使用:...如果我是对的,那么在那里释放对象 - 看起来好像你在做什么 - 是坏消息,因为对象是仍然需要在堆栈中的某个地方。

退房这个职位的详细信息:How to release MPMoviePlayerController?

+0

感谢您的链接,但这不是关于此。我通过movieFinishedCallBack切换功能moviePlayBackDidFinish – Mitch 2011-03-16 20:16:30

+0

他不是释放播放器,而是释放它。 – Till 2011-03-31 09:25:43

+0

他不是通过在那里调用“release”来有效地释放它吗? – 2011-04-06 21:03:08

相关问题