★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-ezvednmj-ke.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
使用 GCD 提供的延時調用方法來實現:git
1 import UIKit 2 3 print("當前時間:", Date()) 4 //延遲3秒執行 5 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3) { 6 print("3秒後執行時間:", Date()) 7 }
封裝一個全局的 delay() 方法:github
1 import UIKit 2 3 //delayTime:延時時間。好比:.seconds(3)、.milliseconds(300) 4 //qosClass: 使用的全局QOS類(默認爲 nil,表示主線程) 5 //closure: 延遲運行的代碼 6 public func delay(by delayTime: TimeInterval, qosClass: DispatchQoS.QoSClass? = nil, 7 _ closure: @escaping () -> Void) { 8 let dispatchQueue = qosClass != nil ? DispatchQueue.global(qos: qosClass!) : .main 9 dispatchQueue.asyncAfter(deadline: DispatchTime.now() + delayTime, execute: closure) 10 }
示例:api
1 //延遲3秒執行(在主線程上) 2 delay(by: 3) { 3 print("當前時間:", Date()) 4 } 5 6 //延遲3秒執行(在全局隊列上優先級高) 7 delay(by: 3, qosClass: .userInitiated) { 8 print("3秒後執行時間:", Date()) 9 }