如何阻止NSTimer?

时间:2015-09-11 12:34:05

标签: ios objective-c nstimer

我有一个NSTimer,我希望在我离开vViewVontroller时停止:

计时器是我从viewWillAppear调用的方法:

- (void) myMehtod
{
    //timer = [[NSTimer alloc] init];
    // appel de la methode chaque 10 secondes.
     timer  =  [NSTimer scheduledTimerWithTimeInterval:10.0f
                                     target:self selector:@selector(AnotherMethod) userInfo:nil repeats:YES];
    //self.timerUsed = timer;
}

我在viewWillDisappear

中调用了stopTimer方法
- (void) stopTimer
{
    [timer invalidate];
    timer = nil;
}

PS:我在这个问题上尝试了user1045302的答案,但它不起作用:

How to stop NSTimer

1 个答案:

答案 0 :(得分:5)

问题的根源可能是myMehtod被调用两次或更多次。

由于该方法在设置新定时器之前不会使现有定时器无效,因此实际上有几个定时器同时勾选。

修复很简单:在设置新计时器之前使旧计时器无效:

- (void)myMehtod
{
    [timer invalidate];
    timer = [NSTimer scheduledTimerWithTimeInterval:10.0f
                                             target:self
                                           selector:@selector(anotherMethod)
                                           userInfo:nil
                                            repeats:YES];
}