DispatchQueue.main.asyncAfter(截止日期:.now()+ 5.0)如何在Swift 3中运行?

时间:2016-11-17 18:07:45

标签: swift grand-central-dispatch dispatch-after

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

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

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

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

这是如何工作的?文档说截止日期参数是dispatch_time_t,它是UInt64的类型。我认为这是一个以纳秒为单位的马赫时间。但是,.now() + delay语法将十进制秒添加到值。 DistatchTime.now()不返回UInt64吗?如果是这样,添加十进制秒应该不起作用。如果有的话,我希望将.now()添加的值视为纳秒,这不会非常有用。

(在swift 2中,您曾经必须将该值乘以常数,以每秒纳秒数。)

1 个答案:

答案 0 :(得分:2)

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

How do I write dispatch_after GCD in Swift 3?

显然,+运算符覆盖了DispatchTime和一个double,将double视为十进制秒,并返回结果DispatchTime