RxSwift
极客Kimi
技术立本,坦荡做人....
展开
-
数据绑定(订阅)
在 RxSwift 里有一个比较重要的概念就是数据绑定(订阅)。就是指将可监听序列绑定到观察者上:我们对比一下这两段代码:let image: UIImage = UIImage(named: ...)imageView.image = imagelet image: Observable<UIImage> = ...image.bind(to: imageView.rx.image)第一段代码我们非常熟悉,它就是将一个单独的图片设置到imageView上。.原创 2020-12-04 16:10:39 · 1460 阅读 · 0 评论 -
[译]RxSwift + MVVM: 怎样搞定 ViewModels
简介我们开始使用RxSwift和Model-View-ViewModel(MVVM)架构开发BlaBlaCar将近一年了。我们对于结果非常激动。我们用这个方式写的代码非常容易看懂,维护,测试以及衡量。然而,开始的几周却不是一件轻松的事情:我们不得不重复搞MVVM+RxSwift架构的某些方面让事情弄对。其中一件事就是就是给ViewModel提供输入的方式。让我们看看两种为ViewModel提供输入(RxEvents)的不同的方法。首先让我们过一遍ViewModel。ViewModelViewMod翻译 2020-12-04 16:04:05 · 1742 阅读 · 0 评论 -
RxSwift系列—销毁者Dispose
七、销毁者Dispose一般来说,一个可观察序列发出了 error 或者 completed 事件,那么所有内部资源都会被释放。但是如果你需要提前释放这些资源或者取消订阅的话,那么你可以对返回的 Disposable(可被清除的资源) 调用 dispose 方法。 调用 dispose 方法后,订阅将被取消,并且内部资源都会被释放掉。7.1 案例引入// 创建序列let ob = Observable<Any>.create { (observer) -> Disposable i原创 2020-12-04 15:50:53 · 1666 阅读 · 0 评论 -
RxSwift序列—Subject
六、Subject来看一个非常特殊的类型-Subject,为什么说它特殊呢?原因很简单:**Subject既可以做序列,也可以做观察者!**正是因为这一特性,所以在实际开发中被大量运用。下面我们一起来解读一下这个特殊的Subject。6.1 基本原理首先我们来看看:SubjectType的原理!public protocol SubjectType : ObservableType { // 关联了观察者类型,具备这个类型的能力 associatedtype SubjectObs原创 2020-12-04 15:41:16 · 1708 阅读 · 0 评论 -
RxSwift系列—Driver
五、Driver5.1 案例引入请求一次网络,绑定到UI上5.1.1 采用Observerablelet result0 = inputTF.rx.text.skip(1) .flatMap { [weak self](input) -> Observable<Any> in return (self?.dealwithData(inputText:input ?? ""))! .observeOn(MainSchedule原创 2020-12-04 15:32:56 · 2508 阅读 · 0 评论 -
RxSwift系列—RxSwift调度者
四、RxSwift调度者4.1 案例引入Schedulers 是RxSwift实现多线程的核心模块。它主要用于控制任务在哪个线程或队列运行。咱们在平时的开发过程中,肯定都使用过网络请求,网络请求是在后台执行的,获取到数据之后,再在主线程更新UI。先来一段代码引入/// 子线程DispatchQueue.global().async { print("请求数据") let _ = self.actionBtn.rx.tap .subscribe(onNext: { () in原创 2020-12-02 21:00:27 · 1652 阅读 · 0 评论 -
RxSwift系列—RxSwift高阶函数
3.1 组合操作符3.1.1 startWith在开始从可观察源发出元素之前,发出指定的元素序列print("*****startWith*****")Observable.of("1", "2", "3", "4") .startWith("A") .startWith("B") .startWith("C", "a", "b") .subscribe(onNext: { print($0) }) .disposed(by: disposeBag)//原创 2020-12-01 19:34:44 · 1590 阅读 · 0 评论 -
RxSwift系列—RxSwift核心逻辑
二、RxSwift核心逻辑2.1 RxSwift使用三步曲第一步:创建序列let ob = Observable<String>.create { (observer) -> Disposable in return Disposables.create()}第二步:订阅信号let _ = ob.subscribe(onNext: { (text) in print("订阅信息: \(text)")}, onError: { (error) in p原创 2020-12-01 19:22:14 · 1628 阅读 · 0 评论 -
RxSwift系列—基本概念
一、基本概念1.1、函数响应式编程1.1.1 函数式函数式编程简称FP(Functional Programming),函数式编程就是一种抽象程度很高的编程范式,它将计算机运算看做是数学中函数的计算,而纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。函数式编程的一个特点就是:允许把函数本身作为参数传入另一原创 2020-12-01 19:09:29 · 1393 阅读 · 0 评论