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 秒あたりのナノ秒数の定数を値に掛ける必要がありました。)