O'Reilly logo

iOS 5 Programming Cookbook by Vandad Nahavandipoor

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

5.8. Performing Tasks After a Delay with GCD

Problem

You want to be able to execute code but after a certain amount of delay, which you would like to specify, using GCD.

Solution

Use the dispatch_after and dispatch_after_f functions.

Discussion

With Core Foundation, you can invoke a selector in an object after a given period of time, using the performSelector:withObject:afterDelay: method of the NSObject class. Here is an example:

- (void) printString:(NSString *)paramString{
  NSLog(@"%@", paramString);
}

- (BOOL)            application:(UIApplication *)application
  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
  
  [self performSelector:@selector(printString:)
             withObject:@"Grand Central Dispatch"
             afterDelay:3.0];

  self.window = [[UIWindow alloc] initWithFrame:
                 [[UIScreen mainScreen] bounds]];
  
  // Override point for customization after application launch.
  self.window.backgroundColor = [UIColor whiteColor];
  [self.window makeKeyAndVisible];
  return YES;
}

In this example we are asking the runtime to call the printString: method after three seconds of delay. We can do the same thing in GCD using the dispatch_after and dispatch_after_f functions, each of which is described here:

dispatch_after

Dispatches a block object to a dispatch queue after a given period of time, specified in nanoseconds. These are the parameters that this function requires:

Delay in nanoseconds

The number of nanoseconds GCD has to wait on a given dispatch queue (specified by the second parameter) before it executes the given block ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required