Combine理论基础

响应式编程(Reactive Programming)

面向异步数据流的编程思想。业界比较知名的响应式框架是 ReactiveX 系列。Rx 也有 Swift 版本 — RxSwift

响应式异步编程

在响应式异步编程中,一个事件及其对应的数据被发布出来,最后被订阅者消化和使用。期间这些事件和数据需要通过一系列操作变形,成为我们最终需要的事件和数据。

观察者模式

观察者模式是设计模式的一种,在软件开发中经常会用到,比如 KVO通知等都用到了观察者模式。观察者模式中有两个角色,一个是被观察者,一个是观察者。比如`一个宝宝在睡觉,爸爸妈妈不能在一直守候在身边,他们自己处理各自的事情,但是一旦听到宝宝的哭声,他们就去看宝宝。这就是一个典型的观察者模式。宝宝是被观察者,爸爸妈妈是观察者(也称作订阅者),只要被观察者发出了某些事件比如宝宝哭声就是一个事件,通知到订阅者,订阅者们就可以做相应的处理工作。Combine 的实现基于观察者模式。

Combine简介

在现代 GUI 编程中,开发者会处理大量事件(包括网络,屏幕输入,系统通知等),根据事件去让界面发生变化。而对异步事件的处理,会让代码和状态变得复杂。而现有的 Cocoa 框架中,异步编程的接口主要有以下这几种:

  • Target/Action
  • NotificationCenter
  • KVO
  • Callbacks

而在实际情况中,由于不同的第三方库,系统框架,业务代码可能采用不一样的方式处理异步事件,会导致对事件的处理分散且存在差异。苹果为了帮助开发者简化异步编程,使代码更加简洁、易于维护,WWDC2019 发布了 Swift 的异步编程框架 — Combine。

核心概念

Combine 框架有三个核心概念

  • 发布者(Publisher):负责发布事件
  • 订阅者(Subscriber):负责订阅事件
  • 操作符(Operator):负责在PublisherSubscriber之间转换事件和数据
响应式编程与Combine的对应关系.png
Combine概览.png

Combine特点

  • 基于泛型:支持泛型
  • 类型安全:Swift 会检查类型安全问题。
  • 组合优先:Apple 建议使用多个自定义Publisher将小部分的事情组合起来。
  • 请求驱动(Request Driven):基于请求和响应的设计思想,消费者向生产者请求某个事务的变化,当变化时生产者给消费者对应的响应。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在具体介绍 Combine 之前,有两个重要的概念需要简要介绍一下: 观察者模式 响应式编程 观察者模式 观察者模...
    没八阿哥的程序阅读 9,325评论 2 21
  • 文章链接 尽管今年的WWDC已经落幕,但在过去的一个多月时间,苹果给iOS开发者带来了许多惊喜,其中堪称最重量级的...
    sindri的小巢阅读 7,181评论 4 14
  • RxJava是什么 RxJava is a Java VM implementation of Reactive ...
    小甜李子阅读 1,247评论 1 0
  • RxJava详解(一) 年初的时候就想学习下RxJava然后写一些RxJava的教程,无奈发现已经年底了,然而我还...
    CharonChui阅读 2,566评论 0 0
  • 匆匆忙忙坐上了去上海的汽车。 到上海有将近10个小时的车程。 途中经过了江苏省的南京、苏州、昆山....。 中午在...
    冷冷诚阅读 413评论 0 2

友情链接更多精彩内容