22 | 细说 iOS 响应式框架变迁,哪些思想可以为我所用?
戴铭
该思维导图由 AI 生成,仅供参考
你好,我是戴铭。
说到 iOS 响应式框架,最开始被大家知道的是 ReactiveCocoa(简称 RAC),后来比较流行的是 RxSwift。但据我了解,iOS 原生开发使用 ReactiveCocoa 框架的团队并不多,而前端在推出 React.js 后,响应式思路遍地开花。
那么,响应式框架到底是什么,为什么在 iOS 原生开发中没被广泛采用,却能在前端领域得到推广呢?
我们先来看看响应式框架,它指的是能够支持响应式编程范式的框架。使用了响应式框架,你在编程时就可以使用数据流传播数据的变化,响应这个数据流的计算模型会自动计算出新的值,将新的值通过数据流传给下一个响应的计算模型,如此反复下去,直到没有响应者为止。
React.js 框架的底层有个 Virtual DOM(虚拟文档对象模型),页面组件状态会和 Virtual DOM 绑定,用来和 DOM(文档对象模型)做映射与转换。当组件状态更新时,Virtual DOM 就会进行 Diff 计算,最终只将需要渲染的节点进行实际 DOM 的渲染。
JavaScript 每次操作 DOM 都会全部重新渲染,而 Virtual DOM 相当于 JavaScript 和 DOM 之间的一个缓存,JavaScript 每次都是操作这个缓存,对其进行 Diff 和变更,最后才将整体变化对应到 DOM 进行最后的渲染,从而减少没必要的渲染。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
iOS响应式框架的思想及应用 本文深入探讨了iOS响应式框架的思想及其在实际开发中的应用。作者首先通过对比前端和iOS开发的特点,以及对Monad设计模式的分析,展示了iOS响应式框架的思想。随后,通过具体案例展示了如何搭建一个不采用Monad模式的函数响应式编程框架,以及其在处理学生分数和状态文本显示方面的应用。文章强调了函数响应式编程方式的优势,简化了逻辑处理和提高了代码维护效率。此外,还提到了ReactiveCocoa框架在iOS原生开发中未被广泛采用的原因,主要是性能和调试方面的考量。最后,作者鼓励读者可以按照函数式编程思想来搭建数据流管道,使用赋值方式来管理数据,可能会更加容易。总的来说,本文为想了解iOS响应式框架的读者提供了深入的技术分析和实际应用建议,对于iOS开发者具有一定的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《iOS 开发高手课》,新⼈⾸单¥59
《iOS 开发高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(24)
- 最新
- 精选
- 哈在我的理解中,Masonry也属于响应式编程,框架的作者最初貌似是写JAVA的,Masonry的响应式貌似比RAC的要轻量级…RAC用到了很多运行时方法替换,调试起来比较麻烦
作者回复: 两者使用场景不同,可比性不大
2019-04-301 - 景天儿1 普通的函数式编程,就是函数可以作为参数、返回值。这使得: 1.1 链式编程成为可能,Masonry就是一个特别好的例子。 1.2 异步调用,函数式编程的结果很像观察者模式。 1.3 同步调用,函数式编程的结果有点像模板模式。 2. 稍纯一些的函数式编程,则强调只用常量,不用变量,也就是可以赋值,不能修改删除,机器学习里面基本都是这么搞。强调输入一样时,输出也一样。 3. monad,以及连赋值都不允许的函数式,之前只听过,没有研究。看了这篇文章中推荐的王垠的博文,感觉理解加深了不少,尤其是参数、局部变量、全局变量与“状态”、数据传输关系的理解上。真的是坑… 4. swift里面支持的高阶函数,有点儿像上面第二种函数式编程。 5. 我理解的响应式编程,就是分离事件的发起者和接受者。其实target-action,block,delegate,kvo,通知,都是可以看作响应式编程。 6. 从设计模式的角度来说,响应式编程与观察者模式、状态模式的思想最接近。2019-06-04127
- boRAC宏确实牛逼。看了源码学到了很多东西。现在公司项目中虽然没有引入 rac。但是把 rac 的宏提取出来用。自定义参数个数并依次处理,非常的方便。2019-04-307
- Geek_45fc02引入后RAC调试实在是太痛苦了,线程栈里嵌套了太多RAC内部的调用,很难追溯到用户真正使用的代码。2019-05-216
- Donkeyman真正逻辑复杂的业务逻辑中不适合使用这些花里胡哨的东西,老老实实按照可读性最高的方式去写,哪怕代码丑一点也无所谓,可读性稳定性最重要2021-08-2511
- isacedReact 时代相比传统 Web 开发除了 Virtual DOM 带来 UI 操作性能的提升,另一个更重要的点是引入单向数据流的思想配合响应式UI更新机制,降低业务开发复杂度,提升研发效率。2021-06-021
- xilie我觉得函数响应式编程其实是简化了程序的逻辑并解耦,就拿传值来说,对象 A 将属性 a 传给对象 B,B再传给 C, C 修改 a,A 再针对 a 的修改做响应,传统的赋值,整个数据和逻辑会随着传递越多越复杂,而响应式,则很简单啊,说不清楚,反正实际开发中,确实简单了很多2019-05-291
- 烘哄轰、React.js的Virtual DOM其实类似于JavaScript和Dom之间的一个缓存。JavaScript每次都是操作这个缓存,之后进行Diff计算和变更,最后才将整体变化对应到DOM进行最后的渲染。2019-05-221
- 何乐乐我觉得React还有一个很重要的点是:React框架帮我们处理 UI 和状态同步,我们不需要用命令式的方式去操作 UI,我们只需要关注状态层数据的正确性。DOM diff 只是为了性能更好的更新 UI,最小化操作 DOM。 而 iOS 和 Android 原生都缺少比较好的声明式 UI 布局方式,当UI 视图改变时,没有太好的方式避免视图的重复创建和渲染。我们操作 UI 大部分时候还是使用命令式的方式。2019-05-1111
- SZKVO采用了isa swizzle,所以KVO过的class不能再次使用isa swizzle,这点会有限制,而且只能在objc runtime下使用,所以KVO的使用也越来越少了。2019-05-071
收起评论