iOS dispatch_after立即触发

时间:2017-03-20 00:51:28

标签: ios ios-simulator grand-central-dispatch ios10 dispatch-async

我尝试使用dispatch_after在6秒后发起一个事件。

我正在解雇一个普通的dispatch_after代码段(右侧内置于Xcode中)。

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(duration + 0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [do something];
});

duration是6秒。但是,[do something]会立即执行(我有一个断点)。我在主线程/主队列上。我做错了什么?

1 个答案:

答案 0 :(得分:0)

这是一个简单的运算符优先级错误。我的目的是传入持续时间参数但是(如果0被传递)也添加少量。 0.01那里。

我错误地写了duration + 0.01 * NSEC_PER_SEC试图表示(duration + 0.01) * NSEC_PER_SEC,但由于运算符优先级,它被解释为duration + (0.01 * NSEC_PER_SEC)。我已经添加了parantheses,它开始正常工作。