iOS dispatch_after 立即开火
iOS dispatch_after is firing immediately
我正在尝试使用 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]
会立即执行(我在上面设置了一个断点)。我在 thread/main 主队列中。我做错了什么?
这是一个简单的运算符优先级错误。我的意图是传递一个持续时间参数,但(如果传递 0
)也添加少量。 0.01
那里。
我错误地写了 duration + 0.01 * NSEC_PER_SEC
试图表示 (duration + 0.01) * NSEC_PER_SEC
,但由于运算符优先级,它被解释为 duration + (0.01 * NSEC_PER_SEC)
。我添加了括号,它开始正常工作了。
我正在尝试使用 dispatch_after
.
我正在发射一个常规的 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]
会立即执行(我在上面设置了一个断点)。我在 thread/main 主队列中。我做错了什么?
这是一个简单的运算符优先级错误。我的意图是传递一个持续时间参数,但(如果传递 0
)也添加少量。 0.01
那里。
我错误地写了 duration + 0.01 * NSEC_PER_SEC
试图表示 (duration + 0.01) * NSEC_PER_SEC
,但由于运算符优先级,它被解释为 duration + (0.01 * NSEC_PER_SEC)
。我添加了括号,它开始正常工作了。