在组合框架中使用操作队列

时间:2019-07-09 07:23:45

标签: nsoperationqueue swiftui combine

随着Combine框架的到来,是否需要使用操作队列了。例如,Apple几乎在WWDC应用程序中的所有地方都使用操作队列。因此,如果我们将SwiftUI与Combine(异步编程)结合使用,是否需要使用操作队列?

1 个答案:

答案 0 :(得分:1)

合并只是另一个异步模式,但不会取代操作队列(或调度队列)。正如GCD和操作队列在我们的代码库中愉快地共存一样,Combine也是如此。

  • GCD擅长于易于编写,但仍具有很高的性能,可将任务分配到各种队列。因此,如果您有可能阻塞主线程的风险,则GCD可以非常轻松地将其分派到后台线程,然后将一些完成块分派回主线程。它还处理后台线程上的计时器,数据同步,高度优化的并行化代码等。

  • 操作队列非常适合高层任务(尤其是那些本身是异步的任务)。您可以承担这些工作,将它们包装在离散的对象中(以实现很好的职责分离),并且操作队列非常优雅地管理执行,取消和约束并发。

  • Combine擅长编写简洁,声明性,可组合的异步事件处理代码。它擅长于编写概述用户界面如何反映某些事件(例如网络任务,通知甚至UI更新)的代码。

这显然是过分简单化,但这只是各种框架的一些优点。当然,这三个框架肯定有重叠,但是每个框架都有它的位置。