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

今天写项目时候使用到定时器于是使用了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定时器不走回调的问题)