swift 3.0 GCD倒计时写法

不墨迹,直接干货

var timeout: Int = 60
let queue = DispatchQueue.global()
let source = DispatchSource.makeTimerSource(flags: [], queue: queue)
source.scheduleRepeating(deadline: .now(), interval: DispatchTimeInterval.seconds(1), leeway: DispatchTimeInterval.milliseconds(100))
source.setEventHandler{
    print(timeout)
    if timeout <= 0 {
        print("结束")
        source.cancel()
        DispatchQueue.main.async {
              // 执行操作,例如更新倒计时按钮UI
        }        
    } else {
        DispatchQueue.main.async {
            // 执行操作,例如更新倒计时按钮UI
        }
    }
    timeout -= 1
}
source.resume()

你可能感兴趣的:(swift 3.0 GCD倒计时写法)