根据this关于@matt使用dispatch_after
的精彩答案,我在操场上尝试了代码并且工作正常(没有错误)。但是,当我尝试执行向后兼容时,DispatchTime.now()
仅适用于iOS 10
,只有这样:
func delay( _ delay: Double, closure: () -> ()){
guard #available(iOS 10, *) else {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
return
}
let when = DispatchTime.now() + delay
DispatchQueue.main.after(when: when, execute: closure)
}
编译器提供将{{1}}修复为DISPATCH_TIME_NOW
并抛出错误
无法将'Int'类型的值转换为预期的参数类型'dispatch_time_t'(又名'UInt64')
我尝试修复它,因为编译器提供但最终导致更多错误。我应该如何在这里使用向后兼容性?我在做什么错了?请帮助,谢谢!
答案 0 :(得分:3)
DispatchTime.now()
以及几乎所有DispatchQueue
或DispatchTime
方法适用于iOS 7,8,9和10.文档完全不正确。