RxSwift Timer补充
几种常见的
timer
的实现方式:
1.NStimer
- init
//1.如果没有把timer添加到RunLoop的,调用timer.fire()只会执行一次,添加RunLoop以后 就不需要再调用timer.fire()
timer = Timer.init(timeInterval: 1, target: self, selector: #selector(timerFire), userInfo: nil, repeats: true)
//timer.fire()
//2.一般默认是default,但是当UI滚动的是timer会不执行,可设置为common
RunLoop.current.add(timer, forMode: .default)
- scheduledTimer
//也是默认把timer添加到RunLoop的default里边的,当UI滚动的是timer也会不执行
timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { (timer) in
print(timer)
})
2.DispatchSourceTimer
// 精确 - GCD 封装timer
// 封装了一套GCD PRODUCER 环境
//不受UI滚动的响应
//初始化
gcdTimer = DispatchSource.makeTimerSource()
gcdTimer?.schedule(deadline: DispatchTime.now(), repeating: DispatchTimeIn