9

我在用

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

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

viewDidDisappear

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

4

5 回答 5

27

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;
}
于 2013-03-02T04:01:33.677 回答
4

试试这个

视图控制器.h

 NSTimer *timer;

视图控制器.m

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


  - (void) viewDidDisappear:(BOOL)animated 
    {
      [super viewDidDisappear:animated];
      [timer invalidate];
    }
于 2013-03-02T04:04:07.107 回答
1

是的,您将- (void)invalidate使用NSTimer.

当然,要做到这一点,您必须将NSTimer返回的实例保存[NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:]到视图控制器的 ivar 或属性中,以便您可以在viewDidDisappear.

于 2013-03-02T03:56:43.177 回答
1

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

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

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

于 2013-03-02T04:01:16.250 回答
1

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

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

之后像这样尝试,

if (Timer != nil) {

            [Timer invalidate];
            Timer = nil;

        }
于 2013-03-02T04:02:55.923 回答