簡體   English   中英

在Swift中休眠或延遲Timer線程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM