//// 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)}
原标题:Swift 延迟运行
关键词: