Objective-C delay action with blocks

cocoa-touch, ios, objective-c

Solution

use dispatch_after:

double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    //code to be executed on the main queue after delay
    [self doSometingWithObject:obj1 andAnotherObject:obj2];
});

Problem

I know that there are several ways of delaying an action in Objective-C like: ``` performSelector:withObject:afterDelay: ``` or using `NSTimer`. But there is such a fancy thing called blocks where you can do something like this: ``` [UIView animateWithDuration:1.50 delay:0 options:(UIViewAnimationOptionCurveEaseOut|UIViewAnimationOptionBeginFromCurrentState) animations:^{ }completion:^(BOOL finished){ }]; ``` Unfortunately, this method applies only to animating things. How can I create a delay with a block in one method so I don't have to use all those `@selectors` and without the need to create a new separate method? Thanks!

Original source