zoukankan      html  css  js  c++  java
  • swift延时执行

    1.延时执行

    //延时1秒执行
    let time: TimeInterval = 1.0
    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + time) { 
        //code
        print("1 秒后输出")
    }

    2.对延时执行喵神进行了较好的封装,这里我也贴出来了,供大家学习

    import Foundation
    
    typealias Task = (_ cancel : Bool) -> Void
    
    func delay(_ time: TimeInterval, task: @escaping ()->()) ->  Task? {
    
        func dispatch_later(block: @escaping ()->()) {
            let t = DispatchTime.now() + time
            DispatchQueue.main.asyncAfter(deadline: t, execute: block)
        }
        var closure: (()->Void)? = task
        var result: Task?
    
        let delayedClosure: Task = {
            cancel in
          if let internalClosure = closure {
                if (cancel == false) {
                    DispatchQueue.main.async(execute: internalClosure)
                }
            }
            closure = nil
            result = nil
        }
    
        result = delayedClosure
    
        dispatch_later {
            if let delayedClosure = result {
                delayedClosure(false)
            }
        }
      return result
    }
    
    func cancel(_ task: Task?) {
        task?(true)
    }
    
    
    /*****使用*****/
    //调用
    delay(2) { print("2 秒后输出") }
    
    
    
    //取消
    let task = delay(5) { print("拨打 110") }
    
    // 仔细想一想..
    // 还是取消为妙..
    cancel(task)
    

    3.OC版本

     //延时
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
              //do something 
    });
     
  • 相关阅读:
    前向传播与反向传播
    卷积运算
    使用GUI工具Portainer.io管控Docker容器
    NextCloud: 打造自己的网盘
    金融危机和经济危机有什么不同
    【转载】Windows环境的Workflow神器:AutoHotkey
    Lua常用模块
    Lua基本语法
    区分 IaaS、SaaS 和 PaaS
    【笔记】流畅的Python
  • 原文地址:https://www.cnblogs.com/-ios/p/8252924.html
Copyright © 2011-2022 走看看