/** GCD + Extension */
extension DispatchQueue {
// 定时器 Timer observer,跟定时器绑定的对象,对象销毁,定时器也自动销毁,timeInterval,间隔时间
public static func timer(observer: AnyObject, timeInterval: Int, handle: @escaping (_ timer: DispatchSourceTimer) -> Void) {
let dsTimer = DispatchSource.makeTimerSource(flags: [], queue: DispatchQueue.global())
dsTimer.schedule(deadline: DispatchTime.now(), repeating: .seconds(timeInterval), leeway: .milliseconds(10))
dsTimer.setEventHandler { [weak observer] in
if observer == nil {
dsTimer.cancel()
} else {
DispatchQueue.main.async {
handle(dsTimer)
}
}
}
dsTimer.resume()
}
}
调用的时候 DispatchQueue.timer
网友评论