增加变量而不干扰GUI

时间:2013-11-29 06:18:54

标签: objective-c multithreading cocoa

我能在Objective-C中创建并行循环吗? 例如,我希望能够运行正常程序,按钮和其他项目响应,但也有一个连续循环每五秒递增一个整数。这是可能的,还是有另一种方法可以做到这一点?

2 个答案:

答案 0 :(得分:0)

使用此..这将在后台创建一个5秒的计时器。用你的代码替换你的功能。将在每5秒后触发

double delayInSeconds = 5.0; // 5 second delay dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); dispatch_after(popTime, dispatch_get_main_queue(),^{ //Your code });

答案 1 :(得分:0)

  1. 一种解决方案是运行NSTimer。这不是一个“连续循环”,但它是每隔X秒做一些事情的完美解决方案。

  2. 另一种可能性是使用for编写常规sleep循环并将其分派到后台队列(dispatch_asyncdispatch_get_global_queue)。这比NSTimer稍微复杂一点,但你也可以得到一个与常规代码并行运行的真正“连续循环”。

  3. 你也可以使用-performSelectorInBackground或用你的循环创建一个真实的背景NSThread,但这基本上是(2),只是更复杂。

  4. 阅读Cocoa Concurrency Programming Guide以了解详情。