dispatch_after - Swift で GCD を使う? 質問する

dispatch_after - Swift で GCD を使う? 質問する

私は予約するApple から提供されたが、定義は見つけられなかった。

の構造を説明できる人はいますかdispatch_after?

dispatch_after(<#when: dispatch_time_t#>, <#queue: dispatch_queue_t?#>, <#block: dispatch_block_t?#>)

ベストアンサー1

私はdispatch_after頻繁に使用するので、構文をシンプルにするためにトップレベルのユーティリティ関数を作成しました。

func delay(delay:Double, closure:()->()) {
    dispatch_after(
        dispatch_time(
            DISPATCH_TIME_NOW,
            Int64(delay * Double(NSEC_PER_SEC))
        ),
        dispatch_get_main_queue(), closure)
}

そして、次のように話すことができます。

delay(0.4) {
    // do stuff
}

すごいですね。言語を向上できる言語です。これ以上のものがあるでしょうか?


Swift 3、Xcode 8 Seed 6 のアップデート

呼び出し構文が改善されたので、気にする価値はほとんどないようです。

func delay(_ delay:Double, closure:@escaping ()->()) {
    let when = DispatchTime.now() + delay
    DispatchQueue.main.asyncAfter(deadline: when, execute: closure)
}

おすすめ記事