RxSwift的基础

Xcode入门

创建一个新的Single-View Application项目,然后打开ViewController.swift 。 我们将在viewDidLoad中添加一个属性和一些代码。 使用CocoaPods或其他软件包管理器将框架添加到项目中后,请确保导入RxSwift

数据存在的地方

变数

在这里,我们创建了一个属性,该属性将为我们的开关保留一个布尔值 。 我们使用一个变量 ,其通用值Bool分配为true作为默认值。 要访问或更改布尔值,我们必须使用viewDidLoad中所示的变量的value属性。

可观察的

从名为switchState变量中 ,我们可以创建一个可观察的对象。 一个Observable侦听状态以更改为新值或相同值(或事件)。 让我们看看接下来可以使用Observable做什么:

过滤

当我们使用。 对我们的可观察对象进行过滤 ,我们给它传递一个闭包,如果闭包返回false,则可观察对象将忽略此事件。

地图

使用 。 map将允许我们将Bool转换为所需的任何类型。 在这种情况下,我们将Bool映射到一个更好地表示我们状态的字符串 。 也许现在我们可以在标签上向用户显示此字符串

到目前为止我们所拥有的

viewDidLoad中 ,我们创建一个observable,并应用一个filterdistingtUntilChangedmap操作来获取titledObservable的最终observable。 由于我们只需要一个可观察的对象,因此我们可以将代码重构为如下所示:

链接每个操作可以使我们更加简洁。

聆听数据更改

订阅可观察的

在我们的viewDidLoad中 ,添加以下内容。 这是我们侦听可观察事件以发送事件的方式。 在我们的案例中,我们正在监听switchObservable的更改,因此我们可以将labelToday.text更新为newValue

订阅可观察对象时,您可以收听不同的事件。 但是,这里我们正在监听onNext事件。

处理袋

处理袋用于将类似ARC的行为返回给RX。 当DisposeBag被释放时,它将在每个添加的一次性物品上调用dispose。

每当您订阅可观察对象时,此订阅方法都会返回Disposable对象。 这对内存管理很重要。 那么,您如何处理一次性用品? 查看以下代码:

在我们的ViewController中 ,我们添加了一个新属性var bag = DisposeBag() 。 然后,在调用.subscribe(onNext :)之后 ,我们再链接另一个方法.disposed(by 🙂并传入我们的bag属性。 而已! 因此,当ViewController从内存中删除时, 包中Disposables也将删除。

处置袋有助于防止保留周期和内存泄漏。 因此,当您订阅任何可观察物时,请使用它们。

想了解更多? 请从Ray Wenderlich查看本文。 它包括一个入门项目,以及有关如何将不具有Reactive组件的应用程序带入RxSwift的详细步骤。