[iOS] NSTimer & CADisplayLink

NSTimer

timeInterval: 以秒為單位

commonModes: 為DefaultMode和TrackingRunLoopMode的集合, 可避免如tableview scroll時timer暫停的問題.

ex:

 let timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(doTimerAction), userInfo: nil, repeats: true)
 RunLoop.current.add(timer, forMode: .commonModes)
 timer.fire()  //開始
 
 @objc func doTimerAction() {
 }

可以看做比NSTimer更精密的Timer, 可配合螢幕的帧數做處理

(iOS固定一秒60帧)

ex:

var displayLinkTimer:CADisplayLink  = CADisplayLink(target: self, selector: #selector(self.doTimerAction))
displayLinkTimer?.preferredFramesPerSecond = 10  //iOS固定一秒60帧, 一秒處理10次
displayLinkTimer?.add(to: RunLoop.current, forMode: .commonModes)
displayLinkTimer.isPaused = false //開啟

 @objc func doTimerAction() {
  }

Last updated