【问题标题】:Pass DispatchTime as an argument in DispatchAfter在 DispatchAfter 中将 DispatchTime 作为参数传递
【发布时间】:2018-09-25 20:53:27
【问题描述】:

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

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 中工作,这就是我为 line 1 所做的:

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

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

创建一个相对于系统时钟的时间,该时间自启动以来滴答作响。

既然他们说它创建了一个相对时间DispatchTime.now() 已经被考虑在内。更不用说,我可能错了。请纠正我。

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

【问题讨论】:

标签: ios swift grand-central-dispatch


【解决方案1】:

这就是你在 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
}

【讨论】:

  • 那么 DispatchTime 在哪里出现 - 在新语法中?
  • 现在很有意义。
猜你喜欢
  • 2015-12-09
  • 2020-09-13
  • 2012-09-03
  • 1970-01-01
  • 2023-03-08
  • 2014-05-04
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多