Combine学习整理

750 阅读3分钟

内容摘录自原文Using Combine中文版

1.What(什么是Combine)

Combine 是 Apple 用来实现函数响应式编程的库, 类似于 RxSwift。 RxSwift 是 ReactiveX 对 Swift 语言的实现。 Combine 使用了许多可以在其他语言和库中找到的相同的函数响应式概念,并将 Swift 的静态类型特性应用其中。

函数响应式编程

函数响应式编程, 也称为数据流编程, 建立在 函数式编程 的概念上。 其中函数式编程适用于元素列表,函数响应式编程应用于元素流。 函数式编程中的各种函数,例如 map, filter, 和 reduce 也有可以应用于流的类似函数。 除了函数式编程原本的能力外,函数响应式编程还包括用于分割和合并流的函数。 像函数式编程一样,你可以对在流中的数据进行转换。

处理事件流的流程、时序、发生的错误以及协调系统如何响应所有这些事件是函数响应式编程的核心。

2.When(什么时候使用Combine)

当你想要设置对各种输入做出反应时,Combine 最合适, 用户界面也非常适合这种模式。

  • 用户界面交互,SwiftUI

  • 异步操作序列,如:一系列的网路请求、编解码等

  • 用于操作错误处理,如:网络受限,改用低分辨率的图像管道

  • Apple官方使用:

    • RealityKit 也具有可用于对事件做出反应的发布者;
    • Foundation 包括作为发布者的 NotificationCenter、URLSession 和 Timer。
    • 任何异步 API 都可以 与 Combine 一起使用。 例如,使用 Vision 框架中的一些 API,利用 Combine 组合流入和流出的数据。

3.学习整理(结构脑图)

publishersubscriber,在 Swift 中被描述为协议

4.使用示例

5.学习推荐

Apple资源(虽已过时,可了解应用场景)

Combine 的在线文档 可以在 developer.apple.com/documentati… 找到。 Apple 的开发者文档托管在 developer.apple.com/documentati…

WWDC 2019 内容

Apple 在其开发者大会中提供了视频、幻灯片和一些示例代码。 关于 Combine 的详细信息主要来自 WWDC 2019

其中一些介绍并深入讲解了 Combine:

许多其他 WWDC19 会议提到了 Combine:

其他资源

除了 Apple 的文档之外,还有许多其他在线资源,你可以在其中找到有关 Combine 运作方式的问题、答案、讨论和说明。