本项目其中的一个主要目标是建立一套尽可能简单的 Rx 接口,同时和其他的的 Rx 实现一样,提供了丰富的并发模型,更多的优化能力以及能够紧密的和 Swift 错误处理机制整合。
相对来说,与 ReactiveCoca 最大的不同应该是在于项目对抽象层的设计上使用了完全不同的思想。
将这些抽象层通过统一的一个概念,也就是 可观测序列(observable sequences),来展现的其中一个好处是所有的计算型抽象接口都会构建在这个概念之上,并且它们都会遵循一套相同的基本原则来组建。它们也都会遵循相同的结构去实现一套相同的接口。
同时,这样的设计也提供了可以非常方便和灵活的去创造订阅(资源)共享策略的方法: share
, , publish
, , shareReplayLatestWhileConnected
…
众所周知,多线程编程是非常困难的,判断其中是否存在闭环更是难上加难。这就是为什么,在 RxSwift 中所有的方法都有着较好的容错机制。即使在产生元素的过程中出现了对自身的递归(死循环),这些方法依然会试图去处理这类异常情况并且防止死锁的产生。这意味着最坏情况下你的程序最多只是抛出了一些错误异常而并不会出现用户不得不去杀死你的应用的情况。更好的一点是,这样子你会相对比较容易去获取你程序的出错信息从而修复问题。
.