[英]Pass DispatchTime as an argument in DispatchAfter
我正在處理一些舊代碼。 以下是兩行代碼(舊代碼),我無法轉換或無法理解:
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))))
我根據此處提到的初始化程序描述進行了此轉換:
創建相對於系統時鍾的時間,該時間自引導以來開始計時。
由於他們說它創建了一個相對時間 ,因此已經考慮了DispatchTime.now()
。 更不用說,我可能是錯的。 請糾正我。
對於第二個線,我不知道對如何通過DispatchTime
作為一個參數DispatchAfter
。
這是您在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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.