IOS为什么要废弃dispatch_get_current_queue?
参考答案:
dispatch_get_current_queue
在iOS中被废弃的主要原因可能是它可能导致死锁。当调用获取方法的队列恰好是同步操作所针对的队列时,dispatch_sync
会一直等待,直到块执行完成。然而,如果执行块的目标队列是当前队列,且当前队列的dispatch_sync
之一被阻塞,那么这个块就永远没有机会执行,从而导致死锁。
为了解决这个问题,苹果提供了其他的方式来获取或判断队列,例如使用DispatchQueue
的setSpecific
和getSpecific
方法,它们可以用于设置和获取关联对象。这样,开发者可以通过设置和获取关联对象来判断当前队列,而不是直接使用dispatch_get_current_queue
。
总的来说,废弃dispatch_get_current_queue
是为了避免可能出现的死锁问题,同时鼓励开发者使用更安全和更灵活的方式来处理队列和同步操作。
以上信息仅供参考,具体的原因可能需要查阅苹果官方文档或相关源码才能完全理解。