gpt4 book ai didi

objective-c - iOS 6 中用于完成 block 的 dispatch_get_current_queue() 的替代方案?

转载 作者:IT老高 更新时间:2023-10-28 12:21:57 41 4
gpt4 key购买 nike

我有一个接受 block 和完成 block 的方法。第一个 block 应该在后台运行,而完成 block 应该在调用该方法的任何队列中运行。

对于后者,我总是使用 dispatch_get_current_queue(),但它似乎在 iOS 6 或更高版本中已被弃用。我应该改用什么?

最佳答案

“在调用者所在的任何队列上运行”的模式很吸引人,但最终不是一个好主意。该队列可能是低优先级队列、主队列或其他具有奇怪属性的队列。

我最喜欢的方法是说“完成 block 在具有以下属性的实现定义的队列上运行:x、y、z”,如果调用者想要更多控制权,则让 block 分派(dispatch)到特定队列。要指定的一组典型属性类似于“相对于任何其他应用程序可见队列的串行、不可重入和异步”。

** 编辑 **

Catfish_Man 在下面的评论中举了一个例子,我只是将它添加到他的答案中。

- (void) aMethodWithCompletionBlock:(dispatch_block_t)completionHandler     
{
dispatch_async(self.workQueue, ^{
[self doSomeWork];
dispatch_async(self.callbackQueue, completionHandler);
}
}

关于objective-c - iOS 6 中用于完成 block 的 dispatch_get_current_queue() 的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13237417/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com