DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) 在 Swift 3 中如何工作?
How does DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) work in Swift 3?
在 Swift3 中,GCD 的语法发生了很大变化。
对 dispatch_after() 的调用现在如下所示:
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {//do something}
该代码会在块被调用 5 秒后调用它。
这是如何运作的?文档说截止日期参数是 dispatch_time_t
,它是 UInt64 的类型别名。我假设它是以纳秒为单位的马赫时间。但是,.now() + delay
语法是将小数秒添加到值中。 DispatchTime.now() return 不是 UInt64 吗?如果是这样,向其添加小数秒应该不起作用。如果有的话,我希望添加到 .now()
的值被视为纳秒,这不是很有用。
(在 swift 2 中,您过去必须将该值乘以每秒纳秒数的常数。)
好的,我在这个帖子中找到了我自己的问题的答案:
显然有一个 +
运算符的覆盖,它接受一个 DispatchTime
和一个双精度数,将双精度数视为十进制秒,并且 returns 得到一个 DispatchTime
.
在 Swift3 中,GCD 的语法发生了很大变化。
对 dispatch_after() 的调用现在如下所示:
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {//do something}
该代码会在块被调用 5 秒后调用它。
这是如何运作的?文档说截止日期参数是 dispatch_time_t
,它是 UInt64 的类型别名。我假设它是以纳秒为单位的马赫时间。但是,.now() + delay
语法是将小数秒添加到值中。 DispatchTime.now() return 不是 UInt64 吗?如果是这样,向其添加小数秒应该不起作用。如果有的话,我希望添加到 .now()
的值被视为纳秒,这不是很有用。
(在 swift 2 中,您过去必须将该值乘以每秒纳秒数的常数。)
好的,我在这个帖子中找到了我自己的问题的答案:
显然有一个 +
运算符的覆盖,它接受一个 DispatchTime
和一个双精度数,将双精度数视为十进制秒,并且 returns 得到一个 DispatchTime
.