【发布时间】:2012-02-02 09:04:30
【问题描述】:
可能重复:
NSTimer doesn't stop
我正在使用 NSTimer 在播放音频时更新滑块的值。
if (sliderUpdateTimer) {
[sliderUpdateTimer invalidate];
sliderUpdateTimer=nil;
}
sliderUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateSliderForAudio) userInfo:nil repeats:YES];
音频播放完毕后,我将在 audioPlayer 委托方法中使 Timer 无效。
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
NSLog(@"audioPlayerDidFinishPlaying");
[player release];
audioPlayer=nil;
[sliderUpdateTimer invalidate];
[sliderUpdateTimer release];
sliderUpdateTimer=nil;
}
委托方法被调用,但计时器没有停止......我只有一个线程,我在其上运行计时器。但是计时器仍然没有停止......欢迎在这方面提供任何帮助......
【问题讨论】:
-
这才是停止定时器的正确方法,肯定有其他问题。你在看什么?函数
updateSliderForAudio还在被调用吗?你怎么知道?应用程序崩溃了吗? -
哪个方法包含
if (sliderUpdateTimer) { ...代码??? -
应用程序没有崩溃。但是,即使在计时器失效后,updateSliderForAudio 也会被连续调用......即使在方法失效后,方法中的日志语句也会被调用