zoukankan      html  css  js  c++  java
  • [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 }
  • 相关阅读:
    第09组(71) Alpha冲刺 (3/6)
    第09组 Alpha冲刺 (2/6)
    第09组 Alpha冲刺 (1/6)
    第09组(71)需求分析报告
    第07组 Beta冲刺(1/5)
    第07组 Alpha冲刺 总结
    第07组 Alpha冲刺 (6/6)
    第07组 Alpha冲刺 (5/6)
    第五次作业
    第07组 Alpha冲刺 (4/6)
  • 原文地址:https://www.cnblogs.com/strengthen/p/11112230.html
Copyright © 2011-2022 走看看