swift - 使用 DispatchGroup 相对于基本计数器类的好处

标签 swift grand-central-dispatch dispatchgroup

我遇到一种情况,我需要等待一组任务完成才能执行某些 UI 渲染代码。

其中一些任务是网络请求,它们始终会完成并离开调度组。然而,有些不是网络请求,可能会也可能不会完成。如果一项任务未完成,并且离开的调用与进入的调用不平衡,则 DispatchGroup 永远不会被解除分配。

有没有办法使用 DispatchGroup 解决这个问题?或者我应该自己实现一个简单的计数器。

最佳答案

您仍然应该使用DispatchGroup,因为它不那么复杂且功能强大。 DispatchGroup 的要点是在您执行的每个方法中添加一个 dispatchGroup.enter() ,您希望在执行 UI 更新之前首先完成该方法,它可以是任何方法,例如网络请求、对象更新等。每次完成时,无论成功与否,您都需要放置一个 dispatchGroup.leave() 来维持平衡,我确信dispatchGroup.notify 将被调用。

关于swift - 使用 DispatchGroup 相对于基本计数器类的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60095061/

相关文章:

ios - 使用 GCD 的异步 UITableViewCell 图像加载

Swift,在 GCD 中,SIGUSR1 不起作用

ios - Swift - 每 50 次后使用 sleep 者运行 1000 个异步任务 - 如何通信 btw DispatchGroups

swift - 如何在alamofire中分离请求体?

ios - 无法使用 StringLiteralConvertible 类型的参数列表调用 'init'

ios - adMob 无法在真实设备上使用测试广告

iOS GCD 与异步 block 同步

swift - DispatchGroup 会永远等待吗?

swift - 如何使用 Dispatch Groups 等待调用依赖于不同数据的多个函数?

swift - 将单个 UICollectionViewCell 对齐到 collectionView 的左侧