Grand Central Dispatch :
It's used to distribute the computation across multiple cores dispatching any number of threads needed and it is optimized to work with devices with multi-core processors. Basically we use this in iOS for running background threads.Swift 2 and Objective-C syntax :
dispatch_after(dispatch_time_t when, dispatch_queue_t queue, dispatch_block_t block)
Method 1 :
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
print("Delayed by 4 Seconds")
}
Method 2 :
This is using closure, so we can easily reuse anywhere by simply as follow.
func delayAction(xSeconds:Double, closure:()->()) {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(xSeconds * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
}
Simple call above method as following.
delayAction(0.5) {
// do stuff here
print("Delayed by 0.5 Seconds")
}
How to write dispatch_after GCD in Swift 3?
dispatch_after or asyncAfter in Swift 4.
dispatch_after or asyncAfter in Swift 4.
Swift 3 and Swift 4 :
DispatchQueue.main.asyncAfter
Suppose if you want to execute a method after x amount of time then we can use 'dispatch_after' methods.
Let take a example. I want to execute a code after 4 seconds.
Suppose if you want to execute a method after x amount of time then we can use 'dispatch_after' methods.
Let take a example. I want to execute a code after 4 seconds.
Method 1 :
let xSeconds = 4.0
DispatchQueue.main.asyncAfter(deadline: .now() + xSeconds) {
print("Delayed by 4 Seconds")
}
Method 2 :
Using closurefunc delayAction(_ xSeconds:Double, closure:@escaping ()->()) {
let when = DispatchTime.now() + xSeconds
DispatchQueue.main.asyncAfter(deadline: when, execute: closure)
}
Simple call above method as following.delayAction(0.5) {
// do stuff here
print("Delayed by 0.5 Seconds")
}
For any queries please feel free to comment.

No comments:
Post a Comment