美文网首页
Swift Dispatch定时器不走回调的问题

Swift Dispatch定时器不走回调的问题

作者: 一笔一划_py | 来源:发表于2022-08-03 09:10 被阅读0次

    今天写项目时候使用到定时器于是使用了Dispatch方法实现,但是发现怎么都不会走回调

    错误代码

    let timer = DispatchSource.makeTimerSource(flags: [], queue: DispatchQueue.global())
    timer.schedule(deadline: .now(), repeating: .seconds(1))
    timer.setEventHandler(handler: {
        print("-------------")
    })
    timer.resume()
    

    这样无法进去回调函数的 print不会打印

    正确写法

    // 将timer定义为全局变量
    var timer: DispatchSourceTimer?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        timer = DispatchSource.makeTimerSource(flags: [], queue: DispatchQueue.global())
        timer?.schedule(deadline: .now(), repeating: .seconds(1))
        timer?.setEventHandler(handler: {
        print("-------------")
    })
        timer?.resume()
    }
    

    同时发现如果是创建的命令行项目即使是把DispatchSourceTimer定义为全局变量也是无法执行回调的,,原因未知。还请知道的大佬不吝赐教😆

    相关文章

      网友评论

          本文标题:Swift Dispatch定时器不走回调的问题

          本文链接:https://www.haomeiwen.com/subject/ensswrtx.html