Objective-C GCD使用

1、给GCD分派任务

c函数代替block,库定义:

typedef void (*dispatch_function_t)(void *);

案例:

void firstIteration(void *paramContext);
void secondIteration(void *paramContext);
void thirdIteration(void *paramContext);

2、GCD 执行UI相关任务

方案:使用dispatch_get_main_queue函数,利用异步来分派任务

案例:

dispatch_queue_t mainQueue = dispatch_get_main_queue();
  
dispatch_async(mainQueue, ^(void) {
    NSLog(@"Current thread = %@", [NSThread currentThread]);
    NSLog(@"Main thread = %@", [NSThread mainThread]);
});
备注:利用 dispatch_get_main_queue获取主队列

3、GCD 同步执行非UI相关任务

方案:使用dispatch_sync函数或者dispatch_sync_f函数

dispatch_sync:block object

dispatch_sync_f:C函数

blcok案例:

dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_sync(concurrentQueue, printFrom1To1000);
C函数案例:

dispatch_queue_t concurrentQueue = 
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
  
dispatch_sync_f(concurrentQueue, 
                  NULL,
                  printFrom1To1000);
备注:dispatch_get_global_queue函数的第一个参数表明并发队列的优先级,代码中都是默认系统的优先级;第二个参数是预留,只要固定为0就OK


4、GCD 异步执行非UI相关任务

方案:使用dispatch_async函数或者dispatch_async_f函数

dispatch_async:block object

dispatch_async_f:C函数

案例:

dispatch_queue_t concurrentQueue = 
    dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(concurrentQueue, ^{
 
});




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值