RxSwift 为什么学习RxSwift

RxSwift扫盲

作为iOS开发者,或许你没听说过RxSwift,但是一定听说过函数式编程[Functional Programming]、响应式编程[Reactive Programming]、函数响应式编程[Functional Reactive Programming];

见名知意,RxSwift 是在 Apple 推出 Swift 后,针对 Swift 语言 ReactiveX 推出 Reactive Extensions 系列一个实现库;除此之外,ReactiveX 还推出了 RxJava,RxAndroid,RxPHP 等蕴含类似思想的框架。

为什么要学习RxSwift?

我们知道 C 语言的面向过程,Objective-C、C++ 面向对象编程, Java 的 Spring 框架提出了面向切面编程的思想,学习 RxSwift 不是学习如何使用第三方库,而是学习一种编程思想--函数响应式编程;

Why use RxSwift?

A vast majority of the code we write involves responding to external events. When a user manipulates a control, we need to write an @IBAction handler to respond. We need to observe notifications to detect when the keyboard changes position. We must provide closures to execute when URL sessions respond with data. And we use KVO to detect changes to variables. All of these various systems makes our code needlessly complex. Wouldn't it be better if there was one consistent system that handled all of our call/response code? Rx is such a system.
RxSwift is the official implementation of Reactive Extensions (aka Rx), which exist for most major languages and platforms.

翻译:

我们编写的绝大多数代码涉及对外部事件的响应。当一个用户操作控制,我们需要写一个@IBAction处理器响应。当键盘改变位置时,我们需要观察通知来检测。当URL会话响应数据时,必须提供闭包来执行。我们使用KVO的变化来检测变量。所有这些不同的系统使我们的代码不必要的复杂。如果有一个一致的系统处理我们所有的呼叫/响应代码,这不是更好吗?Rx就是这样一个系统。
RxSwift是官方实现的Reactive扩展正(又名Rx),存在的最主要的语言和平台。

why use RxSwift?
视频讲解RxSwift使用 RxSwift 进行响应式编程

RxSwift的优点

  • Composable 可组合,在设计模式中有一种模式叫做组合模式,你可以方便的用不同的组合实现不同的类
  • Reusable 代码可重用,原因很简单,对应RxSwift,就是一堆Obserable
  • Declarative 响应式的,因为状态不可变,只有数据变化
  • Understandable and concise 简洁,容易理解。
  • Stable 稳定,因为RxSwift写出的代码,单元测试时分方便
  • Less stateful “无”状态性,因为对于响应式编程,你的应用程序就是一堆数据流
  • Without leaks 没有泄漏,因为资源管理非常简单

GitHub约一万个Star


screen.png

响应式编程:ReactiveCocoa vs RxSwift 选谁好?

RAC是一个已经有着3年历史的项目,从Objective-C时期开始,后来从3.0开始支持了swift(可以通过bridge在OC下使用),接着就完全停止了在Objective-C上的维护。RxSwift项目的时间短一些只有几个月(作者写的时间是15年),但是社区似乎充满了动力。关于RxSwift有一件重要的事是项目是按照 ReactiveX这个组织的规定下开发的,并且所有其他语言的Rx项目也是一样。如果学会了如何使用RxSwift,再去学习Rx.Net, RxJava 或者 RxJS就是小菜一碟,只是语言语法上的差异。这真的就是learn once, apply everywhere.

摘自没故事的卓同学

知乎上某人的回答
如果项目中有oc,就用ReactiveCocoa;
要是用没有,就用RxSwift咯

参考文章
RxSwift 介绍
一头扎进 RxSwift
RxSwift文档的中文翻译
RxSwift使用教程

推荐阅读更多精彩内容