dispatch_get_current_queue的废弃

由于iOS7以后 dispatch_get_current_queue 被废弃

  • 在主线程分离出一个子线程:
 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    [NSThread detachNewThreadSelector:@selector(onPlay) toTarget:self withObject:nil];
}
  • 接下来我们来看一下这种方式开启线程创建出来的队列是什么
 - (void)onPlay
     {
         dispatch_queue_t dispatch_queue = dispatch_get_current_queue();
         NSLog(@"%s", dispatch_queue_get_label(dispatch_queue));
     }

其结果是:com.apple.root.default-overcommit-priority。

由此可见:

主线程

只有一个,并且存在一个与该线程绑定的 dispatch_queue,名字是 com.apple.main-thread,可以通过 dispatch_get_main_queue 得到。

dispatch_queue 线程

dispatch_queue 自己创建的线程,该线程与创建它的 dispatch_queue 绑定。

其他线程

通过NSThread,[NSObject performSelectorInBackground]等接口创建出来的线程,没有与之绑定的 dispatch_queue。

也就是说,如果执行 dispatch_get_current_queue 的线程没有与之绑定的队列的时候,会返回一个 com.apple.root.default-overcommit-priority 的队列,这个队列跟该线程没有关系。

因此我们可以猜测 dispatch_get_current_queue 被废弃的原因就是这个函数不一定总是有意义的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值