簡體   English   中英

我應該使用未命名的Timer或DispatchasyncAfter來延遲一次嗎?

[英]Should I use a unnamed Timer or DispatchasyncAfter to delay something 1 time?

我可以通過兩種方式推遲一些事情(也許還有更多方法):

   func delay(delay:Double, closure: @escaping ()->()) {
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: closure)
    }

   //way 1:
    delay(delay: 1.0, closure: {
    })

   //way 2:
    _ = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: false){ _ in 
    }

這些方式之間有什么區別嗎? 方式1比方式2更好嗎? 我只想添加1秒的延遲,我應該使用哪種方式?

DispatchQueue.main.asyncAfter是一個GCD方法,因此性能更好。 雖然NSTimer更靈活,你可以停止或暫停計時器,但我不認為你可以取消DispatchQueue.main.asyncAfter或者至少你必須編寫一個包裝器。

雖然在你的情況下重復是錯誤的,但它不會影響靈活性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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