内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

RxSwift笔记(一)

2018-06-08 19:02 出处:清屏网 人气: 评论(0

RxSwift 是一个组合异步和事件驱动编程的库,通过使用可观察序列和功能样式运算符来,从而允许通过调度程序进行参数化执行。

RxSwift 在本质上简化了开发异步程序,允许代码对新数据作出反应,并以顺序和孤立的方式处理它。

介绍异步编程

使用 Cocoa 和 UIKit 异步的 API 的问题在于:复杂的异步代码变得非常难写,部分原因是苹果 SDK 提供的 API 种类繁多。

异步编程词汇表:

  1. 状态(State),具体地说,共享可变状态
  2. 命令式程序设计
  3. 副作用
  4. 宣告式編程:允许你定义行为片断, RxSwift 会在有相关事件的时候运行这些行为,并为它们提供一个不可变的,孤立的数据输入。
  5. 响应式系统(Reactive systems)

反应式系统是一个相当抽象的术语,它涵盖了 Web 或 iOS 应用程序,它们显示了大多数或全部以下特性:

  • 反应(Responsive):始终保持 UI 更新,代表了最新的应用程序状态。
  • 能復原的(Resilient):每个行为被隔离开来,并提供可恢复的错误恢复。
  • 灵活的(Elastic): 该代码处理不同的工作负载,通常实现诸如懒惰驱动数据收集、事件节流和资源共享等特性。
  • 消息驱动(Message driven):组件使用基于消息的通信来提高可重用性和隔离性,解耦生命周期和类的实现。

RxSwift 基础

这个标志是一只电鳗。(Rx 项目曾经被称为 Volta)

RxSwift 是微软开源的 ReactiveX 的 Swift 语言的实现。

RxSwift在传统的 Cocoa 编程和纯函数编程之间找到了最佳位置。它允许您对事件作出反应, 方法是使用不可变的代码定义以确定性的、可组合的方式处理异步输入部分。

Rx 代码的三个组成部分是 observables, operators 和 schedulers

Observable<T> 类提供了 Rx 代码的基础:异步产生一系列事件的能力,它可以“携带”数据的不可变快照。简单来说,它允许类在一段时间内订阅其他类发出的值。

ObservableType 协议 ( Observable<T> 需要符合的) 非常简单。可观测的可能发出 (并且观察员能接受) 仅三类型事件:

- next 下一个事件: “携带” 最新 (或 “下一个 “) 数据值的事件。这是观察者 “接收” 值的方式。

- completed 已完成的事件: 此事件以成功终止事件序列。这意味着可观察的完成其生命周期成功, 不会发出任何其他事件。

- error 错误事件: 可观察的终止带有错误, 不会发出其他事件.

两种不同的可观测序列: nite 和 innite。

由于它们是高度解耦和可组合的, 所以这些方法通常称为运算符。比如 filter

运算符也是高度可组合的,它们总是把数据作为输入并输出它们的结果,所以你可以用许多不同的方式轻松地将它们链接起来,实现比单个操作员自己能做的更多的事情。

调度程序是 dispatch queues 的 Rx 等价物。

RxSwift 将充当你的订阅(在左手边下面)和调度器(在右手边)之间的调度器,将工件发送到正确的上下文,并无缝地允许它们与彼此的输出一起工作。

要读取此关系图, 请在不同的计划程序中按预定的顺序 (1、2、3、…) 来执行彩色作品。例如:

·蓝色网络订阅以在基于自定义 NSOperation 的计划程序上运行的一段代码 (1) 开始。

·数据输出块作为下一个块 (2) 的输入, 它运行在一个不同的调度程序上, 它位于并发后台 GCD 队列中。

·最后, 在主线程调度程序上计划最后一块蓝色代码 (3), 以便用新数据更新 UI。

App architecture 应用的架构

值得一提的是,RxSwift 并没有以任何方式改变应用程序的架构;它主要处理事件、异步数据序列和通用通信协议。

通过在苹果开发文档中实现 MVC 体系结构,可以创建具有 Rx 的应用程序。如果你喜欢的话,你也可以选择实现 MVP 架构或 MVVM。RxSwift 也可以帮你实现自己的单向数据架构。

微软的 MVVM 架构是专门针对在平台上创建的事件驱动软件开发的,该平台提供数据绑定。RxSwift 和 MVVM 很好地结合在一起,在这本书的末尾,你会看到这个模式以及如何用 RxSwift 来实现它。

MVVM 和 RxSwift 结合在一起的原因是,ViewModel 允许您公开可观察的( Observable<T> )属性,这些属性可以直接绑定到 View Controller 代码中的 UIKIT 控件。这使得绑定模型数据到 UI 非常简单地表示和编码:

本书中的所有其他示例都使用 MVC 架构来保持示例代码简单易懂。

RxCocoa

RxSwift 是通用 Rx API 的实现。因此,它不涉及任何 Cocoa 或 UIKit 类。

RxCocoa 是 RxSwift 的同伴库,所有的类都有助于 UIKit 和 Cocoa 的开发。除了具有一些高级类之外,RxCocoa 还为许多 UI 组件添加了响应式扩展,以便您可以订阅不同的 UI 事件。

例如,使用 RxCocoa 订阅 UISwitch 的状态变化是非常容易的,例如:

RxCocoa 将 rx.isOn 属性(其中之一)添加到 UISwitch 类,这样您就可以订阅通常有用的事件序列。

安装

官方 git: https://github.com/ReactiveX/RxSwift

使用 CocoaPods 或者 Carthage 均很方便集成 RxSwift。


分享给小伙伴们:
本文标签: RxSwift

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号