我遇到一种情况,我需要等待一组任务完成才能执行某些 UI 渲染代码。
其中一些任务是网络请求,它们始终会完成并离开调度组。然而,有些不是网络请求,可能会也可能不会完成。如果一项任务未完成,并且离开的调用与进入的调用不平衡,则 DispatchGroup 永远不会被解除分配。
有没有办法使用 DispatchGroup 解决这个问题?或者我应该自己实现一个简单的计数器。
最佳答案
您仍然应该使用DispatchGroup
,因为它不那么复杂且功能强大。
DispatchGroup
的要点是在您执行的每个方法中添加一个 dispatchGroup.enter()
,您希望在执行 UI 更新之前首先完成该方法,它可以是任何方法,例如网络请求、对象更新等。每次完成时,无论成功与否,您都需要放置一个 dispatchGroup.leave()
来维持平衡,我确信dispatchGroup.notify
将被调用。
关于swift - 使用 DispatchGroup 相对于基本计数器类的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60095061/