如何停止/无效的NSTimer(How to stop/invalidate NStimer)

2019-08-17 06:53发布

我在用

 [NSTimer scheduledTimerWithTimeInterval:0.1f
                                  target:self
                                selector:@selector(update)
                                userInfo:nil
                                 repeats:YES];

我想停下来调用这个计时器之一。

viewDidDisappear

我怎样才能做到这一点? 失效?

Answer 1:

声明NSTimer *myTimer在.h文件中。

汤姆说,这样的分配情况

myTimer = [NSTimer scheduledTimerWithTimeInterval:0.1f
                                     target:self
                                   selector:@selector(update)
                                   userInfo:nil
                                    repeats:YES];

停止并使用该无效

- (void) viewDidDisappear:(BOOL)animated
{
    [myTimer invalidate];
    myTimer = nil;
}


Answer 2:

试试这个

的viewController .H

 NSTimer *timer;

viewcontroller.m

  timer = [NSTimer scheduledTimerWithTimeInterval:1
                                         target:self
                                       selector:@selector(pollTime)
                                       userInfo:nil
                                        repeats:YES];


  - (void) viewDidDisappear:(BOOL)animated 
    {
      [super viewDidDisappear:animated];
      [timer invalidate];
    }


Answer 3:

是的,你可以使用- (void)invalidate的实例方法NSTimer

当然,要做到这一点,你必须保存NSTimer从返回的实例[NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:]到您的视图控制器的实例变量或属性,这样你就可以在访问它viewDidDisappear



Answer 4:

invalidate的方法NSTimer是使用了停止计时器

- (void) viewDidDisappear:(BOOL)animated 
{
        [super viewDidDisappear:animated];
        [self.timer invalidate];
        self.timer = nil;
}

如果你不是圆弧这时别忘[self.timer release];



Answer 5:

停止或作废的NSTimer首先你要对的NSTimer在全球范围内创建实例。

 Timer=[NSTimer scheduledTimerWithTimeInterval:0.1f
                                  target:self
                                selector:@selector(update)
                                userInfo:nil
                                 repeats:YES];

之后尝试这样的,

if (Timer != nil) {

            [Timer invalidate];
            Timer = nil;

        }


文章来源: How to stop/invalidate NStimer