nsoperationqueue - 使用结合框架的操作队列

标签 nsoperationqueue swiftui combine

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

1年前关闭。




Improve this question




随着 combine 框架的到来,是否有必要再使用操作队列了。例如,苹果在 WWDC 应用程序中几乎到处都使用操作队列。那么如果我们使用 SwiftUI 和 combine(异步编程),是否需要使用 Operation Queues?

最佳答案

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

  • GCD 擅长编写易于编写但仍具有高性能的代码,以将任务分派(dispatch)到各种队列。因此,如果您有可能阻塞主线程的风险,GCD 可以很容易地将其分派(dispatch)到后台线程,然后将一些完成 block 分派(dispatch)回主线程。它还处理后台线程上的计时器、数据同步、高度优化的并行代码等。
  • 操作队列非常适合更高级别的任务(尤其是那些本身是异步的)。您可以将这些工作片段包装在离散对象中(以便很好地分离职责),并且操作队列非常优雅地管理执行、取消和约束并发。
  • Combine 擅长编写简洁、声明性、可组合的异步事件处理代码。它擅长编写概述,例如,一个 UI 应该如何反射(reflect)某些事件(网络任务、通知,甚至 UI 更新)的代码。

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

    关于nsoperationqueue - 使用结合框架的操作队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56947312/

    相关文章:

    iOS开发关于NSOperationQueue

    ios - 大型 SwiftUI 结构导致内存错误

    swiftui - 非标准套件的 Swift UserDefaults 发布者无法正常工作

    swift - .sink 和 Subscribers.Sink 有什么区别?

    ios - 找不到合并 @Published - Xcode11 Beta 5(11M382q)

    ios - NSOperationQueue 中类的对象 - 使用委托(delegate)的异步方法

    ios - Objective-C 等待异步操作和排队完成处理程序

    objective-c - NSOperationQueue 的线程是父线程还是新线程?

    ios - 避免在 SwiftUI 中为其内容设置按钮样式

    ios - 组合框架更新 UI 无法正常工作