c++ - 在 OS X 上延迟函数调用

标签 c++ macos

我看到 Win32 API 中有一个 sleep 方法,还有一个定时器类来延迟函数调用。

我可以在 Mac OS 上使用类似的东西吗?

我想要一个简单的解决方案来创建某种在 JavaScript 和 AS3 中找到的 setTimeout 函数。

最佳答案

您可以使用 2 种方法来完成:

1) 使用 NSObjectperformSelector: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/

相关文章:

macos - AppleScript : How to get files in folder without hidden files?

Bash 关联字典不起作用(声明 : -A: invalid option)

c++ - 无法在linux下向QDialog添加最小化按钮

c++ - Maybe 和 Either 单子(monad)、短路和性能

c++ - 如何在 CLion 中显示 C++ 的参数名称提示?

python - 如何在 Mac 操作系统上安装 libxml2-dev libxslt-dev

css - 是否可以创建特定于 Mac OS 的 CSS 来修复字体差异?

c++ - 在Mac上的Qt-隐藏主窗口时,应用停止响应停靠菜单图标的上下文菜单中的操作

c++ - 为什么取消引用运算符在 C++ 中保留多态性(后期绑定(bind))?

c++ - std::map 中 vector 值的迭代器