iphone - NSTimer 选择器调用

标签 iphone objective-c cocoa nstimer

有人可以向我解释一下 NSTimer 的行为到底是怎样的吗?

基本上我想知道是否有办法让 NSTimer 事件始终发生。如果当前正在执行某些操作,则发生事件。

例如,在:

NSTimer* testTimer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(testMethod) userInfo:nil repeats: NO];
for (int i=0; i<9999; i++) {
    NSLog(@"%i", i);
}

testMethod 永远不会被执行,因为事件触发时正在执行 for 循环。

最佳答案

当计时器触发时,它的选择器将被添加到运行循环中以尽快执行。

但是,您正在创建一个循环,因此运行循环永远不会进行更改来执行计时器的选择器,从而导致您所看到的结果 - 应用程序会等待循环完成,然后再运行计时器的选择器。

如果您有一个长时间运行的任务,最好将其放入一个新线程 - 尝试查看 performSelectorInBackground并阅读 Objective-c 中的线程。

关于iphone - NSTimer 选择器调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3448016/

相关文章:

iphone - 为什么我的应用程序图标在临时安装后消失 (iPhone)

ios - 找不到“openssl/rsa.h”文件

iphone - CA交易延迟

iphone - objective-c - NSDateFormatter 返回错误的日期

ios - 如何在ios中按降序对UIImage添加NSMutableArray进行排序

ios - AudioQueueDispose延迟

ios - 如何将按钮链接到 Xcode 6 中的操作?

cocoa - 是否可以使用标签访问窗口上的所有 gui 组件

c - 如何在 Objective-C 中处理指针数组

ios - 使用 UIDocumentInteractionController 发布 Instagram 图片