RxSwift 的讲解
命令式编程
“传统的UIKit编程就是命令式编程”,使用函数或闭包用来改变程序中响应的“状态”,例如对UI的操作,使用UI组件的实例对象的方法,改变组件的属性,在系统的事件循环下,UI随着属性的变化而更新。
声明式编程
定义一些行为,然后当一些事件发生后,自动的去运行这些行为(而不是主动调用这些行为),是以事件为驱动,没有对应的事件发生,这些行为是不会被运行的。例如:妈妈给小孩子声明了“挨打就要哭”的行为,妈妈一打小孩子,小孩子就会哭,当妈妈不打孩子,孩子就不会哭。小孩子不会去主动的失声大哭。
响应式编程
存在一个系统,他的UI总是与状态保持一致,当状态改变后,他又可以发出新的应用程序状态。在这个系统中,有声明的行为,这些行为又只会在对应的事件发生后才会执行。在这个系统中,无论是UI还会其他数据的状态总是会有,也就是相应的事件总会发生,也是声明的行为也会执行,UI就会变化,变化的UI或数据又会发出新是事件或者状态。在这种系统的支持下的编程方式变叫做响应式编程。
RxSwift与RxCocoa的关系
- RxSwift不会以任何形式去影响现有的应用程序的框架,可以和MVC、MVVM以及MVP模式完美结合。你可以选择任何的设计模式。当然,没有必要为了使用RxSwift而重新开始新的项目,相反完全可以在现有项目基础之上使用RXSwift来构建新的功能。
- RxCocoa是与RxSwift相伴的库,他结合了UIKit和Cocoa的所有类,还提供了更加高级的类。他对UIkit的许多组件进行了响应式扩展,以便我们对他们的状态进行订阅。
toggleSwitch.rx.isON
.subscribe(onNext: enabled in
print(enabled ? "it's On ":"it's Off")
)}
这里是使用的UISwitch控件的Rx扩展