IOS-usr/include-dispatch-queue.h

IOS-usr/include-dispatch-queue.h

// 后台执行:dispatch_async(dispatch_get_global_queue(0, 0), ^{ // something });

// 主线程执行:dispatch_async(dispatch_get_main_queue(), ^{ // something });

// 一次性执行:static dispatch_once_t onceToken;     dispatch_once(&onceToken, ^{ // code to be executed once });

//

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

     NSURL * url = [NSURL URLWithString:@"http://www.baidu.com"];

     NSError * error;

     NSString * data = [NSString stringWithContentsOfURL:url encoding: NSUTF8StringEncoding error:&error];

     if (data != nil)

     {

          dispatch_async(dispatch_get_main_queue(), ^{

               NSLog(@"call back, the data is: %@", data);

          });

     }

     else

     {

          NSLog(@"error when download:%@", error);

     }

});


//例如dispatch_syncdispatch_async的区别等。以及如何创建串行并行队列等。

//还有可能会问到block有关的问题,如为何会copy,为何会循环引用并如何避免。

     ARC

          __block CurrentViewController* blockSelf = self;  

          brush.getCardInfo=^(NSDictionary *info){  

               [blockSelf test];  

          };  

     通过这个方式,告诉block这个变量的引用计数不要+1

     如果你使用的是ARC,那么就应该改成下面这样:

          __weak CurrentViewController* blockSelf = self;  

          brush.getCardInfo=^(NSDictionary *info){  

            [blockSelf test];  

     };  

//1)运行在主线程的Main queue,通过dispatch_get_main_queue获取。

//2)并行队列global dispatch queue,通过dispatch_get_global_queue获取,由系统创建三个不同优先级的dispatch queue。并行队列的执行顺序与其加入队列的顺序相同。

//3)串行队列serial queues一般用于按顺序同步访问,可创建任意数量的串行队列,各个串行队列之间是并发的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值