我遇到了一个奇怪的问题。我需要在播放结束时停止播放器。我正在使用
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopAudio)
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
虽然玩家停止了但是第一次停止了两次,第二次调用了4次,第3次被调用了6次,依此类推。我不知道如何解决这个问题。我的stopAudio方法是
- (void)stopAudio {
[player pause];
[player stop];
}
我有一个自定义按钮,通过它也可以调用stopAudio方法。
任何建议Plz ......
答案 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];
}