7.7. 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*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{[selfperformSelector:@selector(printString:)withObject:@"Grand Central Dispatch"afterDelay:3.0];self.window=[[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]bounds]];// Override point for customization after application launch.self.window.backgroundColor=[UIColorwhiteColor];[self.windowmakeKeyAndVisible];returnYES;}
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_afterDispatches 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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access