| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> RxSwift 响应式编程 -> 正文阅读 |
|
[移动开发]RxSwift 响应式编程 |
响应式编程已经出了很完整的框架了 比如ReactiveCocoa 简称RAC,前段时间有个项目是这个框架(感觉贼鸡儿晦涩难懂,完全把编程思路要整个转换,如果之前不是用这个编程范式),ReactiveCocoa是专门针对的OC Swift,换句话说暂时来说是适配苹果各平台开发(iOS,Mac) 再比如ReactiveX,这个这个版本支持的语言就更多了,也不是很重要,就不细较了,唯一值得在意的是RXSwift
然后pod install完成第三方库安装,这里是用的cocoapods的方式,安装好了说说 使用教程: 1.导入
?2.响应式编程的重要角色Obsevable : 负责发送事件(event) Observer: 负责订阅Obsevable,监听Obsevable发送的事件(我觉得这里应该叫事件队列,因为很可能是一串数据) 这个过程有点类似于KVO,过程中重要的是事件
RxSwift官方定义事件是个枚举,如上图,有三个case,可见事件是有三个状态,1.next携带了具体数据,x携带的是个Element,这是个泛型,也就是数据类型不定。2.error,是一个错误信息,具体传出的是Swift.Error ,整个过程会终止。3.completed 这个完成是队列完成的意思,表示这一个监听过程整个完成了,并没有出错 所以可以确定正常的事件,传递的是next,因为2,3显然说明事件异常终止,或者顺利完成 3.基本运用
上述就是RX的基本运用,实战里面发消息和接消息的一般在两个不同的类,从打印的log也可以看出,不管是onError还是onCompleted(代码位置有限就没单独展示区别),之后就会结束这个响应过程
监听还有一种方式,区别不是很大,但会多一个注销,注销和完成是类似的,区别在于,注销是由监听者结束这个响应流程,而Completed是由消息发送者结束
这是注册监听的返回值,所以注销的权限是由监听持有(虽然我这里写在了一个函数里,实际实战监听和发送者肯定不在一起)
?如果不是需要经常发送,也有单次发送 4.UI层面的运用程序常需要一些计时器之类的东西,比如登录注册页面的短信倒计时,这事解决办法挺多了,说下RX的解决方式
需要很复杂的操作,也可以用subscribe函数进行高度自定义,这里就只是展示计时器和bind函数,timer还能用的是两个函数,一个不需要延时,这个是高度定制的可延时函数, 后面的bind是必须用rx的,这个rx的详细参见前面的协议编程,里面做过特殊处理的,这里不是直接传入label.text就可以的 然后UI层面最重要的我感觉就是Binder
?具体用法参照代码 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 20:11:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |