2

Swift 3 では、GCD の構文がかなり変更されました。

dispatch_after() の呼び出しは次のようになります。

DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {//do something}

このコードは、呼び出されてから 5 秒後にブロックを呼び出します。

それはどのように機能しますか?ドキュメントによると、deadline パラメータは でありdispatch_time_t、これは UInt64 の typealias です。ナノ秒単位のマッハ時間だと思います。ただし、.now() + delay構文は 10 進数の秒を値に追加しています。DispatchTime.now() は UInt64 を返しませんか? その場合、10 進数の秒数を追加しても機能しません。どちらかといえば、追加された値がナノ秒として扱われることを期待していますが.now()、これはあまり役に立ちません。

(Swift 2 では、1 秒あたりのナノ秒数の定数を値に掛ける必要がありました。)

4

1 に答える 1

2

OK、このスレッドで自分の質問に対する答えを見つけました。

Swift 3でdispatch_after GCDを書くにはどうすればよいですか?

+どうやらa と double を取り、DispatchTimedouble を 10 進秒として扱い、結果の を返す演算子のオーバーライドがあるようDispatchTimeです。

于 2016-11-17T18:10:18.220 に答える