2013-05-09 2 views
0

У меня есть таймер, который вызывает функцию каждые 10 секунд:Start & Stop Timer

[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.

И так как вы просите код, добавьте в .h @interface ваш взгляд контроллера:

@property (strong) NSTimer * messageTimer; 

Затем в файле .m ваш взгляд контроллера:

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

Имеет смысл ?

+0

Да, это имеет смысл. Значит, чтобы остановить таймер? – NCoder

+0

Я думаю, что-то вроде этого? [messageTimer invalidate]; самостоятельно. messageTimer = nil; – NCoder

+0

, который выглядит примерно как раз. –