在swift 3和向后兼容性中DISPATCH_TIME_NOW

时间:2016-07-15 04:37:23

标签: ios swift swift3 xcode8

根据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')

我尝试修复它,因为编译器提供但最终导致更多错误。我应该如何在这里使用向后兼容性?我在做什么错了?请帮助,谢谢!

1 个答案:

答案 0 :(得分:3)

DispatchTime.now()以及几乎所有DispatchQueueDispatchTime方法适用于iOS 7,8,9和10.文档完全不正确。