你的位置:首页 > 操作系统

[操作系统]Swift 延迟运行


//// DelayRun.swift// //// Created by XuQing on 16/7/1.// Copyright © 2016年 xuqing. All rights reserved.//import Foundationtypealias Task = (cancel : Bool) -> ()func DelayRun(time:NSTimeInterval, task:()->()) -> Task? {    func dispatch_later(block:()->()) {    dispatch_after(      dispatch_time(        DISPATCH_TIME_NOW,        Int64(time * Double(NSEC_PER_SEC))),      dispatch_get_main_queue(),      block)  }    var closure: dispatch_block_t? = task  var result: Task?    let delayedClosure: Task = {    cancel in    if let internalClosure = closure {      if (cancel == false) {        dispatch_async(dispatch_get_main_queue(), internalClosure);      }    }    closure = nil    result = nil  }    result = delayedClosure    dispatch_later {    if let delayedClosure = result {      delayedClosure(cancel: false)    }  }    return result;}func cancel(task:Task?) {  task?(cancel: true)}