第1部分-RxSwift简介

RxSwift是Swift的被动扩展。 反应性扩展是观察者模式,迭代器模式和函数式编程的最佳创意的结合。 反应性扩展适用于Java,Scala,C#,C ++,JavaScript,Python,Clojure,Kotlin等。 RxSwift的编程模型类似于针对其他语言存在的反应式扩展,并且不止一组API。 这是一种构建响应,弹性,弹性和消息驱动的应用程序的新方法。

什么是反应式编程?

反应式编程是使用异步流或可观察序列(或简单的序列)进行编程。 它涉及流,其转换以及随之而来的绑定。 状态更改/新数据作为流传递,您可以观察和处理。 任何事物都可以是一个流:变量,事件,属性,请求/响应等。您可以收听任意数量的流并做出反应。

仅仅观察流是没有用的。 提供了用于转换任何这些流的工具。 您可以将任何这些转换链接起来,然后完全创建一个新的流。 并且,您可以将流绑定到属性,UI元素等。这使得编写和构建异步程序更加容易。

考虑以下代码:

  var health = 100.00 
var playerCritical = health <= healthCutoffValue
如果playerCritical {//做某事} else {//做另一件事}

在此,变量playerCritical取决于健康状况是否小于临界值。 我们检查播放器是否很关键,并根据它进行一些工作。 但是,当玩家稍后在游戏中变得至关重要时,会发生什么呢? 也许,当播放器很关键时,您需要执行一段代码。 这就是反应式编程的用处 。您可以订阅playerCritical,并且当值更改时,将传递当前的流(或值),并在达到临界值时执行代码。 看看程序的数据流变得多么简单。 并且如前所述,任何东西都可以是流。

这只是一个简单的示例,但是在以后的系列中,我们将看到有关Rx的全部功能以及特定于iOS / macOS开发的更多内容。

反应式编程的好处

那么,Rx有什么好处? 为什么要在项目中使用它?

  • Rx使您可以使用不可变的定义和纯函数以可靠的可组合方式处理流的快照。 您可以使用自己的处理程序轻松地将程序组成清晰的输入/输出函数
  • Rx帮助构建异步程序以对新数据/事件做出反应。 它使您可以编写高性能的代码来处理大量的流/事件。 使用提供的工具,您可以轻松编写高度交互的应用程序
  • 可以很容易地推断出异步程序的功能以及处理程序对异步流的工作方式。 数据流清晰,您可以轻松理解代码块的工作方式
  • 您可以轻松管理整个应用程序的状态。 Rx提供了在各种异步流之间共享状态的工具-如果您想
  • 用Rx编写的代码非常具有说明性,因为定义是不可变的,并且只有流随时间变化,从而减少了副作用
  • Rx轻松让您绑定到UI元素,以更少的工作始终代表最新的应用程序状态
  • 接收工具提供了使资源管理变得简单和容易的工具
  • 反应性扩展在所有平台上均表现出一致的行为。 它们具有通用的模式,类似的运算符,并且与主要语言的库一起使用,它们有助于跨平台开发。 不管语言或平台如何,熟悉Rx库的开发人员都可以轻松地在带有扩展名的代码库上工作
  • Rx有一个庞大的社区。 如果您遇到问题,总是可以得到帮助。 反应性扩展正在针对所有可以想象的环境进行开发,并且社区是非常有远见的。 扩展还专门针对特定平台。 例如,ReactiveCocoa用Rx原语包装可可框架的各个方面,以帮助可可开发

RxSwift安装

使用Cocoapods,在运行> pod install之前,您的Podfile看起来与此类似(为了进行测试,您将使用RxSwift的阻止版本):

  use_frameworks! 

定位“ YOUR_TARGET_NAME”
pod'RxSwift','〜> 3.0'
pod'RxCocoa','〜> 3.0'
结束

目标“ YOUR_TESTING_TARGET”
pod'RxBlocking','〜> 3.0'
pod'RxTest','〜> 3.0'
结束

使用Carthage,您的Cartfile在运行> carthage update之前将如下所示

  github“ ReactiveX / RxSwift”〜> 3.0 

使用Swift软件包管理器,您的Package.swift在运行> swift build之前将如下所示:

 导入PackageDescription 

让包=包(
名称:“ RxTestProject”,
目标:[],
依赖项:[
.Package(网址:“ https://github.com/ReactiveX/RxSwift.git”,majorVersion:3)
]

如果要将其用作git子模块,请在此处找到安装说明。

您也可以在操场上运行RxSwift。 可以在此处找到在游乐场上运行它的说明。

其他连结

您可以在此处阅读有关Rx及其下的各种运算符的更多信息。 您也可以在教程部分中查看其他语言Rx的实现。 使用Rx的Swift项目可以在这里浏览。

接下来是什么?

我们将研究RxSwift的核心概念,可用的运算符,错误处理,编写并发代码以及测试您的Rx代码。 我们还将为您的响应式应用程序寻找最佳的体系结构,以及带有大量代码示例的特定于平台的功能。

现在就这样。

您可以在github上查看我的项目。

您可以在Twitter上关注我。