调度组范例
//实例化调度组
dispatch_group_t group = daspatch_group_greate();
//创建队列
dispatch_queue_t queue = dispatch_get_glabal_queue(0,0);
//任务加入
dispatch_group_async(group, queue, ^{
NSLog(@"A任务---%@", [NSThread currentThread]);
});
dispatch_group_async(group, queue, ^{
NSLog(@"B任务---%@", [NSThread currentThread]);
});
dispatch_group_async(group, queue, ^{
NSLog(@"C任务---%@", [NSThread currentThread]);
});
//获得调度组内的任务完成后的通知,这个通知可以跨队列通信.
//比如这个通知是要更新UI的话,就把它放到主队列里执行就可以了。
dispatch_group_notify(group, queue, ^{
NSLog(@"ABC任务均已完成。");
});
延迟执行范例:
dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0*NSEC_PER_SEC));
dispatch_after(when, dispatch_get_main_queue(), ^{
NSLog(@"123");
});
一次性执行范例:
-(void)once
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSLog(@"该部分即使调用多次只会执行一次");
}
NSLog(@"该部分多次调用多次执行");
}