Search code examples
objective-cdelayexecution

Adding delay between execution of two following lines


I need to add a delay between the execution of two lines in a(same) function. Is there any favorable option to do this?

Note: I don't need two different functions to do this, and the delay must not affect other functions' execution.

eg:

line 1: [executing first operation];

line 2: Delay                        /* I need to introduce delay here */

line 3: [executing second operation];

Solution

  • You can use gcd to do this without having to create another method

    // ObjC
    
    NSTimeInterval delayInSeconds = 2.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
      NSLog(@"Do some work");
    });
    
    // Swift
    
    DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
        print("Do some work)
    }
    

    You should still ask yourself "do I really need to add a delay" as it can often complicate code and cause race conditions