• [Swift]代码延迟执行


    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/11112230.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    使用 GCD 提供的延时调用方法来实现:

    1 import UIKit
    2 
    3 print("当前时间:", Date())
    4 //延迟3秒执行
    5 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3) {
    6     print("3秒后执行时间:", Date())
    7 }

    封装一个全局的 delay() 方法:

     1 import UIKit
     2 
     3 //delayTime:延时时间。比如:.seconds(3)、.milliseconds(300)
     4 //qosClass: 使用的全局QOS类(默认为 nil,表示主线程)
     5 //closure: 延迟运行的代码
     6 public func delay(by delayTime: TimeInterval, qosClass: DispatchQoS.QoSClass? = nil,
     7                   _ closure: @escaping () -> Void) {
     8     let dispatchQueue = qosClass != nil ? DispatchQueue.global(qos: qosClass!) : .main
     9     dispatchQueue.asyncAfter(deadline: DispatchTime.now() + delayTime, execute: closure)
    10 }

    示例:

    1 //延迟3秒执行(在主线程上)
    2 delay(by: 3) {
    3     print("当前时间:", Date())
    4 }
    5          
    6 //延迟3秒执行(在全局队列上优先级高)
    7 delay(by: 3, qosClass: .userInitiated) {
    8     print("3秒后执行时间:", Date())
    9 }
  • 相关阅读:
    《大道至简》第一章 编程的精义
    java课堂练习7
    Java课后练习6
    Java课后练习5
    Java课后练习4
    Java课后练习3
    课堂练习
    求和程序实验报告
    大道至简第二章读后感
    课堂作业例子
  • 原文地址:https://www.cnblogs.com/strengthen/p/11112230.html
Copyright © 2020-2023  润新知