美文网首页
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