像這樣的計時器let timer = Timer.scheduledTimer(timeInterval: 10.0, target: self, selector: #selector(fireTimer), userInfo: nil, repeats: false)
實際上會停止代碼 10 秒嗎?還是后面的代碼會繼續運行?我需要一個可以暫停代碼流 10 秒的計時器,而且我不想使用睡眠或閉包!我該如何實施?謝謝。
uj5u.com熱心網友回復:
您可能可以使用 aBool
和 theTimer
組合。
拿 2 個計時器。
Timer1 - 會以相等的時間間隔呼叫一個內部檢查標志并執行/不執行操作的方法。
let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fireTimer), userInfo: nil, repeats: true)
func fireTimer() {
if self.blockCode { return }
// your code here
}
Timer2 - 將在給定的設定時間后切換標志,比如說 10 秒。
self.blockCode = true
DispatchQueue.main.asyncAfter(deadline: .now() 10.0) {
self?.blockCode = false
}
這將使您在固定的時間內停止執行代碼,而不會像 sleep 那樣實際凍結應用程式。
希望這可以幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/516582.html
標籤:迅速