我看到 Win32 API 中有一个 sleep 方法,还有一个定时器类来延迟函数调用。
我可以在 Mac OS 上使用类似的东西吗?
我想要一个简单的解决方案来创建某种在 JavaScript 和 AS3 中找到的 setTimeout
函数。
最佳答案
您可以使用 2 种方法来完成:
1) 使用 NSObject
的 performSelector:withObject:afterDelay:
2) 使用 Grand Central Dispatch,像这样:
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, interval * NSEC_PER_SEC);
dispatch_after(delay, dispatch_get_main_queue(), ^{
your code here
});
或者,对于更短的语法,您可以在项目的某处添加以下函数:
void Dispatch_AfterDelay(dispatch_queue_t queue, NSTimeInterval afterInterval, dispatch_block_t block)
{
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, afterInterval * NSEC_PER_SEC);
dispatch_after(delay, queue, block);
}
void Dispatch_AfterDelay_ToMainThread(NSTimeInterval afterInterval, dispatch_block_t block)
{
Dispatch_AfterDelay(dispatch_get_main_queue(), afterInterval, block);
}
然后你只需调用:
Dispatch_AfterDelay_ToMainThread(5.0, ^{
your code
});
关于c++ - 在 OS X 上延迟函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9449818/