跳到主要内容

IOS为什么要废弃dispatch_get_current_queue?

参考答案:

dispatch_get_current_queue在iOS中被废弃的主要原因可能是它可能导致死锁。当调用获取方法的队列恰好是同步操作所针对的队列时,dispatch_sync会一直等待,直到块执行完成。然而,如果执行块的目标队列是当前队列,且当前队列的dispatch_sync之一被阻塞,那么这个块就永远没有机会执行,从而导致死锁。

为了解决这个问题,苹果提供了其他的方式来获取或判断队列,例如使用DispatchQueuesetSpecificgetSpecific方法,它们可以用于设置和获取关联对象。这样,开发者可以通过设置和获取关联对象来判断当前队列,而不是直接使用dispatch_get_current_queue

总的来说,废弃dispatch_get_current_queue是为了避免可能出现的死锁问题,同时鼓励开发者使用更安全和更灵活的方式来处理队列和同步操作。

以上信息仅供参考,具体的原因可能需要查阅苹果官方文档或相关源码才能完全理解。