首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RxSwift介绍(二)——Observable

Observable介绍 Observable类是RxSwift框架基础。...与之前介绍RAC类似,Observable对象所触发事件有: next,触发时将可观察对象新值传递给观察者 completed,可观察对象生命周期正常结束并不再响应触发事件 error,可观察对象出现错误导致其生命周期终止...订阅与销毁 与 RAC 订阅信号方法非常类似,使用过程中是需要在需要订阅 Observable 地方调用 subscribe 方法即可。...在RxSwift中每一个订阅都是唯一,而且没有一个类似NotificationCenter通知机制 default 这样全局单例对象。当没有订阅者时,Observable 对象不会发送通知。...此处代码是将所有的订阅者通过RxSwift提供集中销毁管理垃圾包来集中销毁订阅信号。若不这么做,Observable 对象在生命周期完结时会存在内存泄漏问题引发崩溃。

1.4K20

RxSwift底层原理及结合MVVM架构在项目中应用

事件处理、UI展示和更新、多线程…… RxSwift:它只是基于 Swift 语言 Rx 标准实现接口库,所以 RxSwift包含任何 Cocoa 或者 UI 方面的类。...RxCocoa:是基于 RxSwift 针对于 iOS 开发一个库,它通过 Extension 方法给原生比如 UI 控件添加了 Rx 特性,使得我们更容易订阅和响应这些控件事件 基本概念 -...(onNext: { (text) in print("订阅到:\(text)") //text从哪里来?...,并且在初始化时候把外部传过来AnonymousObservableSink.on赋值给了这个Observer,也就是说observer.onNext("测试")最终会触发AnonymousObservableSink.on...+MVVM 对现有网络请求改造 由于之前网络请求返回都是一个对象,接入RxSwift,最好将返回对象定义为Observable类型,这样我们业务模块才能方便订阅返回数据 extension

1.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

iOS_RxSwift使用(文档整理)

观察者 响应事件都是观察者 RxSwift已实现: view.isHidden button.isEnable label.text imageView.image … 最基本创建方式:Observable.subscrible...已定义辅助类型,它们既是可监听序列也是观察者: AsyncSubject:事件完成后只发出最后一个元素/Error(即使是先订阅后产生) PblishSubject:只收订阅元素 ReplaySubject...:会发送订阅元素,可以设置前n个/前一段时间 BehaviorSubject:订阅时,发送最新元素/Error ControlProperty:UI控件属性,无Error,mainThread订阅监听...sequence 热信号 冷信号 是序列 是序列 无论是否有观察者订阅,都使用资源(产生热能) 观察者订阅之前,不使用资源(产生热能) 变量/属性/常量,点击坐标,鼠标坐标,UI控件值,当前时间…...异步操作,HTTP连接,TCP连接,流… 通常包含N个元素 通常包含1个元素 无论是否有观察者订阅,都会生成序列元素 晋档有订阅观察者时才产生序列元素 序列计算资源通常在所有订阅观察者之间共享 通常为每个订阅观察者分配计算资源

1.5K30

RxSwift介绍(三)——更加灵活Subject

前一篇文章讲述 RxSwift 框架中最重要Observable ,但是其局限性只能作为被订阅者被动接收信号并响应事件。...Subject 其订阅者也是 Observable,首先可以动态地接受新值,其次当 subject 值更新时,会通过 event 把新值发送给所有的订阅者。...在 RxSwift 框架中,提供了四种类型 subject,首先要了解一点就是提供四种 subject 创建方式最主要区别:当一个新订阅订阅到subject对象时,能否收到 subject...可以使用这个方法返回这个 Variable Observable 类型,拿到这个 Observable 类型就能订阅它了) 介绍了以上四种 subject ,接下来贴代码并附上运行打印截图,有兴趣可以...貌似现在UI层很多都是 Variable 来管理,但 RxSwift 也封装了很多关于UI,issue回复中说以后会销毁,注意是销毁 Variable 这个类。

1.6K30

RxSwift核心逻辑理解

这一篇文章全面解密 RxSwift核心流程 RxSwift这个优秀框架,设计api也是非常精简,让陌生用户也能非常快速上手 1: 创建序列 2: 订阅序列 3:发送信号 // 1: 创建序列 _...= Observable.create { (obserber) -> Disposable in // 3:发送信号 obserber.onNext("Cooci -...框架班级") return Disposables.create() // 这个销毁不影响我们这次解读 // 2: 订阅序列 }.subscribe(onNext: { (text...Swift 关联类型,这个如果仔细看过可观察序列继承链源码应该不难得出:这个E 就是我们 序列类型,我们这里就是String public class Observable :...) - 优化代码,节省逻辑 3:RxSwift最典型特色就是解决Swift这门静态语言响应能力,利用随时间维度序列变化为轴线,用户订阅关心能随轴线一直保活,达到订阅一次,响应一直持续~

1.1K31

走进 RxSwift 之冷暖自知

RxSwift 认为不管是 Cold 还是 Hot,它们都是 Observable,它们同属于一个抽象,而不是两种独立类型。...简而言之,Cold Observable(以下简称 CO)只有在被订阅时候才会发射事件,每次有新订阅者都会把之前所有的事件都重新发射一遍; Hot Observable(以下简称 HO)则是实时,...一旦有新事件它就发射,不管有没有被订阅,而新订阅者并不会接收到订阅前已经发射过事件。...之前我在 走进 RxSwift 之观察者模式中解释了Observable.empty实现,虽然那是比较老版本,不过核心原理是一样。...默认 Observable 实现是冷,像之前例子中我用Observable.create创建了一个Observable实例,create方法参数是一个闭包,这个闭包被赋值给一个属性,每当这个实例被订阅时候

2.3K10

解密RxSwift核心逻辑

RxSwift核心流程 RxSwift这个优秀框架,设计api也是非常精简,让陌生用户也能非常快速上手 1: 创建序列 2: 订阅序列 3:发送信号 // 1: 创建序列 _ = Observable...return Disposables.create() // 这个销毁不影响我们这次解读 // 2: 订阅序列 }.subscribe(onNext: { (text) in...print("订阅到:\(text)") }) // 控制台打印:“订阅到:Cooci - 框架班级” 我刚开始在探索时候,我是比较好奇:为什么我们Cooci - 框架班级这个字符串会在订阅序列...Swift 关联类型,这个如果仔细看过可观察序列继承链源码应该不难得出:这个E 就是我们 序列类型,我们这里就是String public class Observable :...RxSwift核心逻辑,最后这里附上我们分析图解 ?

66810

moya + RxSwift 进行网络请求

我选择RxSwift原因有两个,一个是RxSwift库相对来说比较轻量级,语法更新相对来说比较少,我之前用过ReactiveCocoa,一些大版本更新需求重写很多代码,第二个更重要原因是因为RxSwift...()是Moya为RxSwift提供扩展方法,顾名思义,可以得到成功地网络请求,忽略其他 mapJSON()也是Moya RxSwift扩展方法,可以把返回数据解析成 JSON 格式...subscribe 是一个RxSwift方法,对经过一层一层处理 Observable 订阅一个 onNext observer,一旦得到 JSON 格式数据,就会经行相应处理 addDisposableTo...数据类建立好之后,我们还需要为 RxSwift Observable 写一个简单扩展方法 mapObject,利用我们写好model 类,一步就把JSON 数据映射成一个个 model。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.8K20

RxSwift介绍(一)——RxSwift初探

之前介绍了RAC在Objective-C环境下RACSignal信号订阅使用流程、宏定义以及各种信号操作使用。作为函数式响应编程代表,就不得不提RxSwift。...在swift环境下,RAC孪生兄弟RxSwift同样提供了相同框架使用,并且基于swift语言优点,RxSwift甚至能够更简洁地开发业务代码。关于RxSwift优点,大把大把的人在夸。...结构体中数据需要被RxSwift包装成了Observable信号。...在RAC中使用组合式销毁来集中管理销毁RACSignal,而在RxSwift中与RAC类似的使用到了DisposeBag来实现Observable集中销毁管理。...在视图控制器或者其持有者将要销毁时候,会自动释放掉绑定在它上面的资源。它是通过类似“订阅处置机制”方式实现(类似于 NotificationCenter removeObserver)。

2.9K40

RxSwift 系列(三) -- Combination Operators

RxSwift 系列(三) -- Combination Operators 前言 本篇文章将要学习如何将多个Observables组合成一个Observable。...Combination Operators在RxSwift实现有五种: startWith merge zip combineLatest switchLatest startWith 在Observable...merge 将多个Observable组合成单个Observable,并且按照时间顺序发射对应事件。更多详情 ? 感觉和gitmerge操作是一样效果。...subject2.onNext("③") zip 将多个Observable(注意:必须是要成对)组合成单个Observable,当有事件到达时,会在每个序列中对应索引上对应元素发出。...(ps:之前版本RxSwift好像最多只能组合8个Observable)更多详情 let disposeBag = DisposeBag() let subject1 = PublishSubject

84170
领券