dispatch_after(dispatch_time_t when, dispatch_queue_t queue, void (^block)(void));
dispatch_after_f(dispatch_time_t when, dispatch_queue_t queue, void *context, void (*function)(void *));
dispatch_after() function submits the block to the given queue at the time specified by the when parameter. The when parameter is a value created by
dispatch_walltime(). Submission of the block may be delayed by the system in order to improve power consumption and system performance. The system applies a leeway (see dispatch_source_set_timer(3)) that is equal to one tenth of the interval between when and the time at which the function is called, with the leeway capped to at least one millisecond and at most one minute.
For a more detailed description about submitting blocks to queues, see dispatch_async(3).
dispatch_after() retains the passed queue.
Specifying DISPATCH_TIME_NOW as the when parameter is supported, but is not as efficient as calling
The result of passing DISPATCH_TIME_FOREVER as the when parameter is undefined.
dispatch_after() function is a wrapper around
dispatch(3), dispatch_async(3), dispatch_time(3)