0

如果我像这样启动 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; 
4

1 回答 1

1

是的。

好的,现在这里是一个扩展的描述。NSTimer在最近的NSRunLoop,即当前的调度循环上注册自己(它们可能嵌套)。此循环向各种来源询问事件并调用相应的回调。

当该NSTimer触发时,它返回YESNSRunLoop运行传递的回调。没有“其他当前视图控制器”之类的东西。这都是关于第一响应者和视图层次结构的,它们都对运行循环没有任何影响。

于 2013-05-10T00:08:14.333 回答