0
我想爲swift 3程序添加延遲,並在SO中使用DispatchQueue.main.asyncAfter()在此處找到good examples。我在Playground測試了它,它確實增加了延遲。令我感到困惑的是,增加61秒(延遲)的延遲顯然花費了67秒。在Playground中快速添加延遲3看起來不準確
let date1: Date = Date.init()
func print_delay(s: String) -> Void {
print(s)
}
func delay(d: Double) -> Void {
DispatchQueue.main.asyncAfter(deadline: .now() + d) {
let date2: Date = Date.init()
let calendar: Calendar = Calendar.current
let components: DateComponents = calendar.dateComponents([.year, .month, .day, .hour, .second], from: date1, to: date2)
print_delay(s: "delta: \(components.second!)")
}
}
let delay_array = [1.0, 5.9, 10.2, 22.1, 31.5, 40.9, 51.8, 61.0]
for item in delay_array {
delay(d: item)
}
delta: 1
delta: 5
delta: 10
delta: 22
delta: 34
delta: 42
delta: 56
delta: 67
所以我在一個命令行程序中測試了相同的代碼,看看它是否更準確,但它也有不同的時間。這是在macos塞拉利昂,最新xcode和2012年的macbook pro。
之前我添加的ReadLine()程序僅是退出。 – kometen
@kometen與預期:-) – user3441734
偏離課程,你是對的,我的不好。 :-)但爲什麼時間的差異? – kometen