In Swift 3 the syntax of GCD has changed quite a bit.
A call to dispatch_after() now looks like this:
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {//do something}
That code would invoke the block 5 seconds after it's called.
How does that work? The docs say that the deadline parameter is a dispatch_time_t
, which is a typealias for UInt64. I assume it's a mach time in nanoseconds. However, the .now() + delay
syntax is adding decimal seconds to the value. Doesn't DispatchTime.now() return a UInt64 ? If so, adding decimal seconds to that should not work. If anything, I would expect the value added to .now()
to be treated as nanoseconds, which would not be very useful.
(In swift 2 you used to have to multiply the value by a constant for the number of nanoseconds per second.)