我能在Objective-C中创建并行循环吗? 例如,我希望能够运行正常程序,按钮和其他项目响应,但也有一个连续循环每五秒递增一个整数。这是可能的,还是有另一种方法可以做到这一点?
答案 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)
一种解决方案是运行NSTimer
。这不是一个“连续循环”,但它是每隔X秒做一些事情的完美解决方案。
另一种可能性是使用for
编写常规sleep
循环并将其分派到后台队列(dispatch_async
,dispatch_get_global_queue
)。这比NSTimer
稍微复杂一点,但你也可以得到一个与常规代码并行运行的真正“连续循环”。
你也可以使用-performSelectorInBackground
或用你的循环创建一个真实的背景NSThread
,但这基本上是(2),只是更复杂。
阅读Cocoa Concurrency Programming Guide以了解详情。