标签:style blog io color ar os 使用 for sp
功能:
方案:
使用dispatch_after 和 dispatch_after_f函数
讨论:
dispatch_after 在一段给定的、以纳秒为单位的时间段之后,将Block Object分派到一个分派队列。这个函数需要的参数有:
Delay in nanoseconds
在执行指定的 Block Object之前 GCD 必须在一个给定的分派队列 (由第二个参数指定) 上等待的纳秒数。
Dispatch queue
Block Object 在给定的延迟(由第一个参数指定)之后必须执行在其上执行的派送队列。
Block object
在指定的分派队列上等待一定纳秒后Block Object会被调用;它没有返回值并且不接参数。
Delay in nanoseconds
等待的纳秒数。
Dispatch queue
C 函数必须在给定延迟之后在其上执行分派送队列。
Context
一个值在堆中传递到了 C 函数的内存地址。
C函数
在特定时间段之后必须执行的 C 函数。
下面先看一个dispatch_after的例子:
- (void)dispatchAfter{ double delayInSeconds = 2.0; dispatch_time_t delayInNanoSeconds = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds*NSEC_PER_SEC); dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_after(delayInNanoSeconds, concurrentQueue, ^{ NSLog(@"延迟执行"); }); }
dispatch_time(dispatch_time_t when, int64_t delta)
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, 3.0f*NSEC_PER_SEC);
现在我们看看如何使用dispatch_after_f函数:
void processSomething(void *paramContext){ /* Do your processing here */ NSLog(@"Processing..."); } - (void)dispatchAfterf{ dispatch_time_t delayInNanoSenconds = dispatch_time(DISPATCH_TIME_NOW, 2.0f*NSEC_PER_SEC); dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_after_f(delayInNanoSenconds, concurrentQueue, NULL, processSomething); }
标签:style blog io color ar os 使用 for sp
原文地址:http://www.cnblogs.com/safiri/p/4076540.html