-1

Is there any why to call a method after 2second with dispatch, just like performSelector:withObject:afterDelay: ?

A.T
  • 105
  • 3
  • 13

3 Answers3

12

Yes you can,

Swift 3, Swift 4

DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
    <# YOUR CODE HERE #>
}

Swift 2

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(2.0 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) { () -> Void in
        <# YOUR CODE HERE #>
}

Objective C

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    <# YOUR CODE HERE #>
});
NSTJ
  • 3,858
  • 2
  • 27
  • 34
Mehul Sojitra
  • 1,181
  • 9
  • 15
  • While this code block may answer the OP's question, this answer would be more useful if you explain how this code works. – Caleb Kleveter Sep 23 '15 at 13:32
  • 1
    For more information about GCD, Refer link: [GCD](https://developer.apple.com/library/prerelease/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/index.html#//apple_ref/c/func/dispatch_after) – Mehul Sojitra Sep 23 '15 at 13:45
  • thanks @mehulsojitra this code works.. – A.T Sep 24 '15 at 12:24
3

Yes, we can add a delay to perform GCD with following code

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 10 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
 // Do you work over here
});

Hope this will help you.

sKhan
  • 9,694
  • 16
  • 55
  • 53
Nilesh Patel
  • 6,318
  • 1
  • 26
  • 40
1
dispatch_time_t deferTime = 2.0f;
dispatch_after(deferTime, dispatch_get_main_queue(), ^{
//call you method here
});
Sandeep Ahuja
  • 931
  • 6
  • 17