多次调用的方法

时间:2014-02-14 06:03:35

标签: ios iphone objective-c concurrency mpmovieplayer

我在我的项目中使用MPMoviePlayer。我已经注册了电影播放器​​完成通知,它运行良好。每当收到电影播放器​​错误的通知时,我都会显示错误提醒。但问题是错误警报会多次显示。之所以会发生这种情况,是因为同一错误会同时收到多个通知。我尝试使用布尔变量来控制警报显示,但由于通知是同时收到的,因此无效。我应该采用什么方法,请建议。 我的通知方法代码:

MPMovieFinishReason reason = [[[notification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] intValue];
NSError *errorMsg = [[notification userInfo] valueForKey:@"error"];
NSString *errmsg = [errorMsg localizedDescription];
if (reason == 1 && !errorReceived){
    NSError *errorMsg = [[notification userInfo] valueForKey:@"error"];
    NSString *errmsg = [errorMsg localizedDescription];
    [self showErrorAlert];
}

注册通知:

NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(moviePlayerDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.player];

用于删除viewWillDisappear

中的观察者
[[NSNotificationCenter defaultCenter]removeObserver:self];

1 个答案:

答案 0 :(得分:0)

收到错误后删除观察者

[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player];

并在点击播放后添加观察者。