2013-05-09 2 views
0

Если я начать NSTimer так:Выполняет ли NSTimer все приложение?

@property (strong) NSTimer * messageTimer; 


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

Продолжает ли он работать, когда я переключаюсь на разные контроллеры зрения?

Пока я не отмените его:

[messageTimer invalidate]; self. messageTimer = nil; 

ответ

1

Да.

Хорошо, теперь подробное описание. NSTimer регистрируется на ближайшем NSRunLoop, то есть текущий цикл отправки (они могут гнездиться). Этот цикл запрашивает различные источники событий и вызывает соответствующие обратные вызовы.

Когда настало время для NSTimer, он возвращает YES в NSRunLoop и выполняет прогон обратного вызова. Нет такой вещи, как «другой контроллер текущего вида». Это все о иерархии первого ответчика и представления, и не оказывает никакого влияния на циклы запуска.

Смежные вопросы