[英]Sleep or delay a Timer thread in Swift
我一直試圖在自重復計時器上創建一到兩秒的延遲。 這是我創建計時器的方式:
currentThread = Timer.scheduledTimer(timeInterval: 0.001, target: self, selector: #selector(Movement.updatePosition), userInfo: nil, repeats: true)
因此,計時器會不斷運行updatePosition()方法。 但是,我在該方法中有一個if語句,希望將計時器延遲幾秒鍾:
if distance <= respawnDistance * 0.1 {
// Delay timer for 1 second
}
我當時想我可以做到這一點:
currentThread.invalidate()
然后只需創建另一個在1秒鍾后運行的計時器,即可重新激活前一個計時器。 但是,我認為如果有一種方法可以使當前Timer休眠,那么效率會很低?
NSTimer
不夠准確。 其最大分辨率約為50-100ms。 無論如何,您可以添加一個變量來控制計時器的觸發:
var doNotUpdate = false
if distance <= respawnDistance * 0.1 {
doNotUpdate = true
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
doNotUpdate = false
}
}
func updatePosition() {
if doNotUpdate { return }
// update your position
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.