MPMoviePlayerPlaybackDidFinishNotification的问题

时间:2010-09-13 06:20:46

标签: iphone

我遇到了一个奇怪的问题。我需要在播放结束时停止播放器。我正在使用

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopAudio) 
                                        name:MPMoviePlayerPlaybackDidFinishNotification
                                        object:nil];

虽然玩家停止了但是第一次停止了两次,第二次调用了4次,第3次被调用了6次,依此类推。我不知道如何解决这个问题。我的stopAudio方法是

- (void)stopAudio {

[player pause];
[player stop];

}

我有一个自定义按钮,通过它也可以调用stopAudio方法。

任何建议Plz ......

2 个答案:

答案 0 :(得分:10)

每次开始播放时,您似乎都将自己添加为观察者。由于观察请求在玩家停止时未被清除,因此观察请求的数量会增加,并且您会收到越来越多的通知。要么确保您只注册一次,要么在播放器停止播放时使用removeObserver:removeObserver:name:object:取消注册。

答案 1 :(得分:1)

解决了问题......因为Zoul建议我删除了stopAudio方法中的观察者。我还用NSNotificationCenter中的播放器替换了nil对象。现在工作正常...... Thanx Zoul

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopAudio) 
                                        name:MPMoviePlayerPlaybackDidFinishNotification 
                                        object:player];

我的stopAudio方法是:

- (void)stopAudio {


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

}