我有这样的代码调用定时器调度方法.到目前为止,我从来没有遇到过调用计时器方法的问题.我甚至没有使用RunLoop.
private func expireToken(afterTimeInterval timeInterval: TimeInterval) {
print("[DEBUG] Schedule expiration, time: \(timeInterval), main thread \(Thread.isMainThread)")
let timer = Timer.scheduledTimer(withTimeInterval: timeInterval, repeats: false) { timer in
print("[DEBUG] Expiring token")
self.tokenContainer = .expired
timer.invalidate()
}
RunLoop.current.add(timer, forMode: .common)
}
此方法似乎是从后台线程调用的,因为第一个打印语句记录了控制台的此类信息
[DEBUG] Schedule expiration, time: 10.0, main thread false