RxSwift - 入门介绍

RxSwift - 入门介绍,第1张

概述RxSwift - 入门介绍 什么是Rx 如果是iOS程序员,那么大家肯定熟悉action-target模式、delegate模式或者通知(notification),这些模式基本都是用来解决事件响应的问题,action-target就不用说了,UIButton就是基于这个模式来响应事件的,delegate也是一样的,比如说UIAlertViewDelegate,这个协议定义了很多UIAlertV RxSwift - 入门介绍 什么是Rx

如果是iOS程序员,那么大家肯定熟悉action-target模式、delegate模式或者通知(notification),这些模式基本都是用来解决事件响应的问题,action-target就不用说了,UIbutton就是基于这个模式来响应事件的,delegate也是一样的,比如说UIAlertVIEwDelegate,这个协议定义了很多UIAlertVIEw事件响应的回调方法,Notification有点区别,它是采用订阅-通知的方式,并且可以有多个响应的对象。

Rx全名是ReactiveX,是一个函数响应式框架,遵循Functional Reactive Programming(FRP)的设计规范,它把事件封装成信号流,并采用观察者模式来实现。

例子(HelloWorld!)

先来看个简单的例子,这里是demo工程,下载到本地,用XCode打开,点击按钮的时候,可以看到输出了"HelloWorld!",打开RxSwiftVIEwController文件,看按钮响应的那段代码。

@objc func onClicked(_ sender: Any?) {        let observable = Observable<String>.create { (observer) -> disposable in            observer.on(Event.next("HelloWorld!"))            observer.onCompleted()                        return disposables.create()        }                let disposeBag = disposeBag()                observable.subscribe(onNext: { (str) in            print(str)        },onError: { (error) in                    },onCompleted: {                    }).disposed(by: disposeBag)    }

在方法里面先定义了一个Observable对象,这个叫可观察序列(后面会解释),这个对象是可以订阅的,相当于观察者模式中的被观察者,subscribe便是它的订阅方法,当调用subscribe的时候,会触发observer.on(Event.next("next"))和observer.onCompleted()的执行,并且会在onNext和onCompleted中响应,所以就打印出了"HelloWorld!"。

这里是最简单的情况,实际运用中会碰到更复杂的情况,不过别当心,先把简单的理解透了,复杂的就好理解了。

可观察序列(Observable)

可观察序列,也就是能发送一些事件流的事物,什么是事件流?最常见的按钮的连续点击便是一个事件流。

可观察序列可以发送三种类型的事件:1、发送数据(Next),2、遇到问题(Error),3、发送完成(Completed)。比如上面的例子,observable发送了一个Next事件“observer.on(Event.next("HelloWorld!"))”以及一个Completed事件“observer.onCompleted()”。当遇到错误的时候,还可以发送Error事件。

事件的定义如下,是个枚举

public enum Event<Element> {    /// Next element is produced.    case next(Element)    /// Sequence terminated with an error.    case error(Swift.Error)    /// Sequence completed successfully.    case completed}
观察者

观察者可以订阅序列的事件。比如上面的代码里的subscribe。原型如下:

func subscribe(onNext: ((Self.E) -> Swift.VoID)? = default,onError: ((Error) -> Swift.VoID)? = default,onCompleted: (() -> Swift.VoID)? = default,ondisposed: (() -> Swift.VoID)? = default) -> disposable

订阅的时候把对应的响应放进对应的闭包里。

订阅的序列有两种类型:

冷序列:只有观察者订阅这个序列的时候,才会发送事件,比如上面代码中Observable。 热序列:不管有没有观察者订阅,都会发送事件,比如按钮的点击,不管有没有观察者,只要用户点击了,都会发送点击事件。 总结

Rx其实很简单,就是一个观察者模式的应用,Observable发送事件,observer订阅事件,收到相应的事件作出相应的处理。

总结

以上是内存溢出为你收集整理的RxSwift - 入门介绍全部内容,希望文章能够帮你解决RxSwift - 入门介绍所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1054691.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存