
RxSwift
yahibo
啦啦啦
展开
-
Swift闭包
闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。类似于OC中的block,js中的匿名函数以及其他一些编程语言中的匿名函数。 1、全局函数:有名字但不能捕获任何值; 2、嵌套函数:有名字,也能捕获封闭函数内的值; 3、闭包表达式:无名闭包,可以根据上下文环境捕获值。 一、语法定义 {(paraments)->return type in sta...原创 2019-07-18 13:12:36 · 161 阅读 · 0 评论 -
RxSwift-deallocating探索
在RxSwfit中,有两个特殊序列 deallocating序列 deallocated序列 在RxSwift中deinit等价于dealloc,在上面两个序列被订阅时,那么当deinit调用时会触发上面两个序列发送信号。执行顺序:deallocating -> deinit -> deallocated。看一段代码: override func viewDidLoad() { ...原创 2019-08-11 17:47:05 · 288 阅读 · 0 评论 -
RxSwift调度者scheduler
RxSwift的核心非常简单,无非就是以下四点: 可观察序列 Observalbe 观察者 Observer 调度者 Scheduler 销毁者 Dispose 可观察序列、观察者,在《RxSwift核心源码探索》中有讲,下面就来看看调度者Scheduler具体做了哪些事情。调度者scheduler主要用于控制任务在哪个线程或队列运行,而scheduler是对GCD的封装,GCD我们很熟悉,通...原创 2019-08-15 11:27:57 · 626 阅读 · 0 评论 -
RxSwift-内存管理
在iOS中采用的引用计数来管理内存的,ARC中,编译阶段,系统会自动向代码中插入内存管理代码,无非就是对对象的引用做计数。在RxSwift中也仿造了系统引用计数实现了自己的一套引用计数功能。 init() { #if TRACE_RESOURCES _ = Resources.incrementTotal() #endif } deinit { #if TRACE_RESOUR...原创 2019-08-09 14:26:20 · 682 阅读 · 0 评论 -
RxSwift-dispose源码解析
任何对象都有生命周期,有创建就要销毁。 OC中有init和dealloc,swift有init和deinit,RxSwift也不例外,RxSwift有create和dispose。下面就看看dispose是如何管理序列销毁的。 一篇没有配图的文章是没有灵魂的 通过前面了解了RxSwift的两种清除方式: 订阅产生的可清除资源(Disposable)对象,调用dispose方法清除 通过清除包D...原创 2019-08-06 20:31:08 · 228 阅读 · 0 评论 -
RxSwift-中介者模式
中介者模式顾名思义,通过中介来连接买家和供应商,减少买家和供应商的联系成本。在RxSwift中存在很多中介者来帮我们处理很多事情,如map来帮我们处理数据并转化为新的序列;filter来帮我们筛选数据并产生新序列;zip来帮助我们将多个序列合成为一个序列。这些内部复杂的实现不可能每次在用到时重新实现一边,通过中介者达到一个很好的复用及管理。 map Observable<Int>.o...原创 2019-08-13 12:20:50 · 264 阅读 · 0 评论 -
RxSwift特征序列
一、概述 二、Single 三、Completable 四、Maybe 五、Driver 六、Signal 七、ControlEvent 一、概述 任何序列都可以用Observable描述,创建序列 -> 订阅序列 -> 信号发送 -> 信号接收。 Observable<Any>.create { (observer) -> Disposable in ...原创 2019-07-31 18:44:02 · 943 阅读 · 0 评论 -
RxSwift核心逻辑
一、Observable 二、Observer 三、Subject 四、Operator 五、Disposable 六、Schedulers 七、Error Handling 凡事物皆序列 一、Observable Observable为可监听序列,是用来描述一个对象异步生产的序列,任何事务都可以用Observable来标识。 万事万物都为序列,每个个体都是观察者,观察周围事物的变化。 页面开...原创 2019-07-26 18:37:26 · 866 阅读 · 1 评论 -
RxSwift-map源码解析
map操作符为每一个序列元素提供转换,并返回到原序列。 看一段代码示例: Observable<Int>.of(1,2,3,4,5,6) .subscribe(onNext: { (val) in print(val) }).disposed(by: disposeBag) 输出:1,2,3,4,5,6 Observable<Int>...原创 2019-08-04 20:05:37 · 250 阅读 · 0 评论 -
函数响应式编程思想 & RxSwift 核心逻辑
函数响应式编程 = 函数式编程 + 响应式编程 一、函数式 一种编程范式,如y=f(x),y=f(f(x))(高阶函数),不同的输入对应不同结果,f(x)对应具体的数据处理流程,可以是简单的常量值,也可以是复杂的计算或其他函数调用,x即为因变量,输入不同的x会输出不同的y。C中的函数调用,OC中的方法调用,这种写法就叫做函数式编程。 特点:代码简洁(复用)、易于理解(接近自然语言)、便于代码管理。...原创 2019-07-22 12:52:31 · 283 阅读 · 0 评论 -
RxSwift核心源码探索
响应式编程是RxSwift的核心思想,统一思想快速开发。同样在ReactiveX系列中其他语言也都使用了这一思想,当我们掌握了RxSwift运用,那么RxJava,RxPHP,RxJs等等都能够快速上手。那么RxSwift是如何响应的呢?下面就来看一下源码都做了哪些事情。 RxSwift核心流程 1、创建序列 2、订阅序列 3、发送信号 先看一下是如何使用的,代码如下: //1、创建序列 let...原创 2019-07-29 09:23:44 · 586 阅读 · 1 评论 -
Swift UI控件
swift是对OC语法的简化,使用函数式编码方式,编码更简洁灵活。使用let来声明常量,var来声明变量。一些类方法的调用可以直接使用点来获取类方法,省去类名,编译器会自动识别对应的类。下面是对一些控件的初始化及展示的写法。 import UIKit import WebKit import MapKit class ViewController: UIViewController,UITabl...原创 2019-07-18 13:13:07 · 1158 阅读 · 0 评论 -
RxSwift-MVVM
MVVM核心在于数据与UI的双向绑定,数据的变化会更新UI,UI变化会更新我们的数据。那这种绑定操作谁来做呢?当然是我们的RxSwift。学习RxSwift框架以来,似乎并没有真正使用过这个框架,下面就来看看,RxSwift具体能带来哪些便利。 一、登录页面 先看看效果: UI页面代码省略,下面只看数据UI是如何绑定的。 1、UISwitch和UILabel的绑定 switch1.rx.isOn...原创 2019-08-15 19:07:36 · 1617 阅读 · 0 评论