美文网首页
DispatchSourceTimer 的setEventHan

DispatchSourceTimer 的setEventHan

作者: FreshAlpha | 来源:发表于2020-01-08 10:06 被阅读0次

    前提:sourceTimer已经设置为全局变量,sourceTimer在创建之前也调用了cancel(),创建之后调用过resume()。

    func startTimer() {
    
            self.sourceTimer?.cancel()
            let queue = DispatchQueue(label: "\(AppDomain).verticalCycle.timer", attributes: .concurrent)
            sourceTimer = DispatchSource.makeTimerSource(flags: .strict, queue: queue)
            sourceTimer?.schedule(deadline: .now(), repeating: duration, leeway: .milliseconds(100))
            sourceTimer?.setEventHandler(handler: {
                DispatchQueue.main.async {
                   
                }
                
            })
            sourceTimer?.resume()
        }
    

    暂时的解决办法:调用定时器的创建开启时给0.1S的延时

    func openTimer() {
            cancelTimer()
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
                self.startTimer()
            }
            
        }
    

    相关文章

      网友评论

          本文标题:DispatchSourceTimer 的setEventHan

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