【发布时间】:2017-05-19 09:41:13
【问题描述】:
我有一个精确的计时器,需要每 40 毫秒更新一次(比可能的最精确)。在 iOS10 上很好(我使用新的 scheduleRepeating 方法),但在 iOS9 上我需要使用旧方法 (scheduledTimer) 并且非常滞后(有时 24 毫秒,有时是72...),所以我的硬件界面和视觉效果又滞后。
有什么建议吗?
func launchTimer() {
if #available(iOS 10.0, *) {
startTickTimer()
} else {
let timerQueue = DispatchQueue(label: "my.queue.tickTimer", attributes: .concurrent)
self.swiftTimer = Timer.scheduledTimer(timeInterval: period, target: self, selector: #selector(executeTimer), userInfo: nil, repeats: true)
timerQueue.async {
RunLoop.current.add(self.swiftTimer!, forMode: RunLoopMode.defaultRunLoopMode)
}
}
}
static func startTickTimer() {
let queue = DispatchQueue(label: "my.queue.tickTimer", attributes: .concurrent)
DMXTimer.tickTimer?.cancel()
DMXTimer.tickTimer = DispatchSource.makeTimerSource(queue: queue)
DMXTimer.tickTimer?.scheduleRepeating(deadline: .now(), interval: .milliseconds(40), leeway: .seconds(1))
DMXTimer.tickTimer?.setEventHandler {
executeTimer()
}
DMXTimer.tickTimer?.resume()
}
static func executeTimer() {
print("hello moto")
}
【问题讨论】:
标签: ios swift timer ios9 nstimer