将DispatchTime作为DispatchAfter中的参数传递

时间:2018-04-16 07:36:12

标签: ios swift grand-central-dispatch

我正在处理一些旧代码。以下是两行(旧代码),我无法转换或理解:

let dispatchTime = dispatch_time(dispatch_time_t(DispatchTime.now()), Int64(seconds * Double(NSEC_PER_SEC)))  
dispatch_after(dispatchTime, dispatch_get_main_queue(), block)  

现在,为了让它在 Swift 4.x 中运行,这就是我为第1行所做的:

let dispatchTime =  DispatchTime(uptimeNanoseconds: UInt64(Int64(seconds * Double(NSEC_PER_SEC))))  

我根据提到的here初始化描述进行了此转换:

  

创建相对于自启动后滴答的系统时钟的时间。

由于他们说它创建了相对时间,因此已经考虑了DispatchTime.now()。更何况,我可能错了。请纠正我。

对于第二行,我不知道如何在DispatchTime中将DispatchAfter作为参数传递。

1 个答案:

答案 0 :(得分:2)

这就是你想要的Swift 3 +:

let seconds = 2.0
// dispatchTime 2 seconds from now:
let dispatchTime: DispatchTime = DispatchTime.now() + seconds
DispatchQueue.main.asyncAfter(deadline: dispatchTime) {
    // code to be executed
}