在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中,您曾经必须将该值乘以常数,以每秒纳秒数。)
答案 0 :(得分:2)
好的,我在这个帖子中找到了我自己的问题的答案:
How do I write dispatch_after GCD in Swift 3?
显然,+
运算符覆盖了DispatchTime
和一个double,将double视为十进制秒,并返回结果DispatchTime
。