iOS 开发高手课
戴铭
前滴滴出行技术专家
42934 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
用户故事 (1讲)
iOS 开发高手课
15
15
1.0x
00:00/00:00
登录|注册

22 | 细说 iOS 响应式框架变迁,哪些思想可以为我所用?

Cocoa Touch框架的简单节点树结构
复杂的DOM树结构
简单、高效的实现
分数信号处理
学生基本信息添加
RACStreamBindBlock
数据流操作
未流行的原因
思路与React.js类似
减少不必要的渲染
Diff计算
优势
例子
不采用Monad模式
语言发展上的考量
代码视觉上的优势
RACStream
提高开发效率
ReactiveCocoa
Virtual DOM
数据流传递
自动计算新值
数据流传播
Monad的缺点
KVO的重要性
值得学习的地方
ReactiveCocoa的接口设计思想
响应式编程的性能影响
函数响应式编程
Monad的设计模式
Monad设计模式
响应式框架的可取之处
iOS中的响应式框架
React.js框架
响应式编程范式
课后作业
总结
ReactiveCocoa的思想
响应式框架的思想

该思维导图由 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
立即购买
登录 后留言

全部留言(24)

  • 最新
  • 精选
  • 在我的理解中,Masonry也属于响应式编程,框架的作者最初貌似是写JAVA的,Masonry的响应式貌似比RAC的要轻量级…RAC用到了很多运行时方法替换,调试起来比较麻烦

    作者回复: 两者使用场景不同,可比性不大

    2019-04-30
    1
  • 景天儿
    1 普通的函数式编程,就是函数可以作为参数、返回值。这使得: 1.1 链式编程成为可能,Masonry就是一个特别好的例子。 1.2 异步调用,函数式编程的结果很像观察者模式。 1.3 同步调用,函数式编程的结果有点像模板模式。 2. 稍纯一些的函数式编程,则强调只用常量,不用变量,也就是可以赋值,不能修改删除,机器学习里面基本都是这么搞。强调输入一样时,输出也一样。 3. monad,以及连赋值都不允许的函数式,之前只听过,没有研究。看了这篇文章中推荐的王垠的博文,感觉理解加深了不少,尤其是参数、局部变量、全局变量与“状态”、数据传输关系的理解上。真的是坑… 4. swift里面支持的高阶函数,有点儿像上面第二种函数式编程。 5. 我理解的响应式编程,就是分离事件的发起者和接受者。其实target-action,block,delegate,kvo,通知,都是可以看作响应式编程。 6. 从设计模式的角度来说,响应式编程与观察者模式、状态模式的思想最接近。
    2019-06-04
    1
    27
  • bo
    RAC宏确实牛逼。看了源码学到了很多东西。现在公司项目中虽然没有引入 rac。但是把 rac 的宏提取出来用。自定义参数个数并依次处理,非常的方便。
    2019-04-30
    7
  • Geek_45fc02
    引入后RAC调试实在是太痛苦了,线程栈里嵌套了太多RAC内部的调用,很难追溯到用户真正使用的代码。
    2019-05-21
    6
  • Donkeyman
    真正逻辑复杂的业务逻辑中不适合使用这些花里胡哨的东西,老老实实按照可读性最高的方式去写,哪怕代码丑一点也无所谓,可读性稳定性最重要
    2021-08-25
    1
    1
  • isaced
    React 时代相比传统 Web 开发除了 Virtual DOM 带来 UI 操作性能的提升,另一个更重要的点是引入单向数据流的思想配合响应式UI更新机制,降低业务开发复杂度,提升研发效率。
    2021-06-02
    1
  • xilie
    我觉得函数响应式编程其实是简化了程序的逻辑并解耦,就拿传值来说,对象 A 将属性 a 传给对象 B,B再传给 C, C 修改 a,A 再针对 a 的修改做响应,传统的赋值,整个数据和逻辑会随着传递越多越复杂,而响应式,则很简单啊,说不清楚,反正实际开发中,确实简单了很多
    2019-05-29
    1
  • 烘哄轰、
    React.js的Virtual DOM其实类似于JavaScript和Dom之间的一个缓存。JavaScript每次都是操作这个缓存,之后进行Diff计算和变更,最后才将整体变化对应到DOM进行最后的渲染。
    2019-05-22
    1
  • 何乐乐
    我觉得React还有一个很重要的点是:React框架帮我们处理 UI 和状态同步,我们不需要用命令式的方式去操作 UI,我们只需要关注状态层数据的正确性。DOM diff 只是为了性能更好的更新 UI,最小化操作 DOM。 而 iOS 和 Android 原生都缺少比较好的声明式 UI 布局方式,当UI 视图改变时,没有太好的方式避免视图的重复创建和渲染。我们操作 UI 大部分时候还是使用命令式的方式。
    2019-05-11
    1
    1
  • SZ
    KVO采用了isa swizzle,所以KVO过的class不能再次使用isa swizzle,这点会有限制,而且只能在objc runtime下使用,所以KVO的使用也越来越少了。
    2019-05-07
    1
收起评论
显示
设置
留言
24
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部