2013-05-09 100 views
0

我有一个调用每10秒一个功能的计时器:启动和停止计时器

[NSTimer scheduledTimerWithTimeInterval:10.0 
            target:self 
            selector:@selector(checkForMessages) 
            userInfo:nil 
            repeats:YES]; 

它调用的函数:

- (void)checkForMessages 
{ 

    //do something here 

} 

两个问题:

  1. 我如何如果需要停止计时器?
  2. 我可以把这个定时器和功能放在某个地方,以便我可以从不同的视图控制器调用它吗?

回答

1

scheduledTimerWithTimeInterval”返回“NSTimer”对象。

如果您坚持该对象(例如通过“property”设置并获取),则可以通过NSTimer invalidate method将其停止。在您的视图控制器的.m文件

@property (strong) NSTimer * messageTimer; 

然后:

既然你要求的代码,添加到您的视图控制器的.h @interface

self.messageTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 
            target:self 
            selector:@selector(checkForMessages) 
            userInfo:nil 
            repeats:YES]; 

有道理?

+0

是的,这是有道理的。所以要停止计时器,你会? – NCoder 2013-05-09 23:20:39

+0

我想这样? [messageTimer无效];自。 messageTimer = nil; – NCoder 2013-05-09 23:42:50

+0

看起来正好。 – 2013-05-10 00:09:01