zoukankan      html  css  js  c++  java
  • swift dispatch_after

    typealias Task = (cancel : Bool) -> ()
        func delay(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)
        }
  • 相关阅读:
    171-滑动窗口问题
    170-133. 克隆图
    169-150. 逆波兰表达式求值
    windows相对路径设置与取消小工具[提效]
    Sword 38
    Sword 33
    Sword 28
    Sword 26
    Sword 12
    Sword 07
  • 原文地址:https://www.cnblogs.com/newBlash/p/5493186.html
Copyright © 2011-2022 走看看