如果我开始这样的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;
答案 0 :(得分:1)
是
好的,现在这里有一个扩展说明。 NSTimer
在最近的NSRunLoop
上注册,即当前的调度循环(它们可以嵌套)。此循环询问各种事件源并调用相应的回调。
当NSTimer
触发时,它会将YES
返回到NSRunLoop
,并且会运行回调。没有“其他当前视图控制器”这样的东西。它完全是关于第一响应者和视图层次结构,对运行循环都没有任何影响。