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