What is the difference between these DispatchTime calculations?

102 Views Asked by At

I ran into this line code in AlamofireImage's older version.

let tinyDelay = DispatchTime.now() + Double(Int64(0.001 * Float(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)

// Need to let the runloop cycle for the placeholder image to take affect
DispatchQueue.main.asyncAfter(deadline: tinyDelay) {
  self.run(imageTransition, with: image)
  completion?(response)
}

Why it is written that way when tinyDelay can be defined as below?

let tinyDelay = DispatchTime.now() + Double(0.001)
1

There are 1 best solutions below

1
Martin R On BEST ANSWER
DispatchTime.now() + Double(Int64(0.001 * Float(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)

looks like a (bad) translation of the Objective-C code

dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.001 * NSEC_PER_SEC));

to Swift. The latter is a standard Objective-C code-snippet, but there no reason to make it so complicated in Swift. You can simply write

let tinyDelay = DispatchTime.now() + 0.001

or

let tinyDelay = DispatchTime.now() + .milliseconds(1)