2

在 Swift 3 中,GCD 的语法发生了很大变化。

对 dispatch_after() 的调用现在看起来像这样:

DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {//do something}

该代码将在调用块 5 秒后调用该块。

这是如何运作的?文档说截止日期参数是 a dispatch_time_t,它是 UInt64 的类型别名。我认为这是一个以纳秒为单位的马赫时间。但是,.now() + delay语法是在值中添加小数秒。DispatchTime.now() 不返回 UInt64 吗?如果是这样,添加小数秒不应该工作。如果有的话,我希望增加的值.now()被视为纳秒,这不是很有用。

(在 swift 2 中,您过去必须将该值乘以一个常数以获得每秒的纳秒数。)

4

1 回答 1

2

好的,我在这个帖子中找到了我自己的问题的答案:

如何在 Swift 3 中编写 dispatch_after GCD?

显然有一个+运算符的覆盖,它接受一个DispatchTime和一个双精度,将双精度作为十进制秒,并返回一个结果DispatchTime

于 2016-11-17T18:10:18.220 回答