如何停止/使NStimer无效

时间:2013-03-02 03:55:14

标签: iphone ipad nstimer

我正在使用

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

我想停止调用这个计时器。

viewDidDisappear

我该怎么做?无效?

5 个答案:

答案 0 :(得分:26)

在.h文件中声明NSTimer *myTimer

像汤姆这样分配实例

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

使用此

停止和无效
- (void) viewDidDisappear:(BOOL)animated
{
    [myTimer invalidate];
    myTimer = nil;
}

答案 1 :(得分:4)

试试这个

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];
    }

答案 2 :(得分:1)

是的,您可以使用- (void)invalidate的{​​{1}}实例方法。

当然,为此,您必须将从NSTimer返回的NSTimer实例保存到视图控制器的ivar或属性中,以便您可以在[NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:]中访问它

答案 3 :(得分:1)

invalidate NSTimer的方法用于停止计时器

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

如果您不是ARC,请不要忘记[self.timer release];

答案 4 :(得分:1)

首先,您必须在全局范围内为NSTimer创建实例,以便停止或使NSTimer无效。

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

之后尝试这样,

if (Timer != nil) {

            [Timer invalidate];
            Timer = nil;

        }