余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

干货集中营-ReactiveCocoa+RXSwift+MVVM(抖音直播干货)

xiyangw 2022-12-03 13:20 8 浏览 0 评论

投稿文章,作者:南栀倾寒(博客)

学习函数响应式编程已经接近两个月的时间。说实话坚持下来实在不易。两个月的时间看过近150篇博文,算下来啃下来一本千页的技术书籍也差不多。不过随着知识面的拓广,学习起来也更加顺利。本篇文章主要整理下自己收集的学习路线。其中包括了函数式编程的思想,ReactiveCocoa2.x(主要是Objective-C部分的函数响应式编程框架),ReactiveCocoa4.x(扩充了Swift部分的支持),RXSwift(ReactiveX系列),加上函数式编程对MVVM架构的帮助和影响。

写在之前

这篇文章中不适合新手,没有码过2年业务的程序员我觉得可以了解下,不一定非要学习使用这个,因为你的经验往往不足,在学习之后可能觉得自己能驾驭(要上天),但是随着业务的复杂度上升,类似RAC的重量级框架带来的副作用,调试的困难性等会让你后悔莫及。

面向对象编程是一个被大众易于接受的方式,也就意味着更容易协同工作。函式响应式编程虽然不是一个新的话题,但是引入iOS项目实际开发还是要抱谨慎态度,毕竟学习函数式编程的路线还是比较陡峭,这就意味者在团队开发中,需要斟酌如何引用,如何培养新手,如何控制对框架的不良使用在项目中蔓延。

MVC是一个非常成熟的架构,在业务开始复杂的时候,合理的将网络请求,数据持久化等相关与控制器耦合不严重的公共抽取出来,足够满足日常开发需求。 对MVVM的理解的差异性也会写出让团队成员写出截然不同的风格。

说了这么多废话,其实是想表达,如果想在项目中使用要谨慎,谨慎 ,再谨慎,不过我们可以从其中学习到很多以前我们从来没思考过的问题,甚至是一种全新的思维方式,有时候一些巧妙的实现,会让你感叹到计算机科学的神奇,也可以在你跳槽的时候成为你的加分项。

知识必备

需要你对Objective-C,block有比较清晰的了解,由于后面部分代码是由Swift实现,建议你掌握Swift,(由于Swift的特性,对于函数式编程更容易实现,也更好理解,毕竟你看写博文的作者几乎每个都掌握的,所以去学习吧。),如果你用过Swift的高阶函数,map,FlatMap,reduce,Filter等,会更加容易理解。

思想的建立

这部份主要奠定自己的函数式思想的建立,对函数(闭包,block)作为一等公民有新的理解。

这一部分可能学习的时间最久,需要的知识面也可能更广,也最容易让人放弃,因为你不知道你花了大把时间学习的是什么(jb玩意)。

不过坚持下来,你将会更加理解函数式编程,在学习接下来的ReactiveCocoa和RXSwift的时候只是把思想代码化。

首先来篇自己写的

本文让你对如何实现链式编程有个简单的认识。文中包括了Objective-C和Swift两个版本。

来自Mattt Thompson发布在 NShipster让你对引入RAC这类FRP(Functional Reactive Programming)框架对编程范式的改变有个直观的印象。

来自蘑菇街的limboy解释下RAC和FRP的关系。

深入浅出-iOS Reactive Cocoa的常见用法

简书上看到的文章,从最基本的Demo开始。

在这里直接推荐了两篇使用的文章。貌似会比较突然,但是作者觉得,Talk is cheap ,show me the code.(别装逼了,亮代码吧) 思想总归是要用代码来实现的,这部份内容偏实用,预计需要一周的时间才能掌握的差不多,可能你在学习的过程中,会遗忘,没关系,思想的建立是一步一步的,学习这些代码还是为了更好的建立思想(我也没指望你一遍掌握RAC),至于代码这篇文章,反正你是要看好几遍的,第一次忘了就忘了。

之前的文章都是 functional Programming,和reactive programming,这里偶然看到一篇响应式编程思想入门,强烈推荐。

这篇文章中讲到了RAC自带的debug插件,在学习RAC过程中的实践,以及一些技术博文链接。

在学习过程中我们可能经常会听见一些比较函数式风格的名词,比如monad,functor等,学到这里我找到了另外比较好的资料。

第一本书籍可能花费的时间很长,不过这本书也是最有深度的,可以从中学到更多函数式的思想。

ReactiveCocoa2.x

非常不错的RAC入门教程

来自sunnyxx的博文。

学了这么多来一篇RAC结构分享的文章

用了这么久的RAC,你可能不止一次听到冷热信号,也可能没有意识到有些什么是不对的,这里给出来自美团的对冷热信号的分析。

美团博文最后给出了一个冷热信号可以转换的方法,但是没有讲清楚,这里有篇外国博文作为补充。

这里补充一篇对RAC的概述

RAC项目实战

如果你认认真真的学习到了这里,想必以及有了不错的进步,接下来我们可以看下RAC的源码实现了,看下这个庞然大物是如何实现这些神奇的功能的。

MVVM With ReactiveCocoa

这部份主要讲了RAC在MVVM中的表现,以及如何利用RAC在MVVM中做数据绑定这项核心操作。

ReactiveCocoa4.x

在学习这部份的时候发现没有合适的入门教程,所以就自己摸索着翻译了部分。可以参看

一份Reactive4文档翻译

ReactiveCocoa4的详细讲解

至于四作者并没给出,估计是挖的坑忘记填

RXSwift

使用自带教程入门

快速指南系列

速查表

文末给出了我自己整理的RAC和RXSwift速查表,毕竟谁也不可能记得住那么多方法和小技巧的。

相关推荐

Vue的框架(了解)

前端MVC设计模式MVC设计模式,其实就是将前端实现某个业务的所有代码划分为三部分Model:模型,指数据模型,这个数据一般来自于服务器View:视图,指页面标签内容Controller:控制...

Vue.js实战 第五章练习一

练习要求:在原有表格基础上,新增一项是否选中该商品的功能,总价变为只计算选中商品的总价,同时提供一个全选的按钮。实现思路:按照vue数据和dom元素双向绑定的特性,定义allCheckStatus变量...

Vue基础到进阶教程之class和style绑定

关于class和style我们并不陌生,这个在学习css的时候就是家常便饭了,操作元素的class列表和内联样式是数据绑定的一个常见需求。因为它们都是属性,所以我们可以用v-bind处理它们,...

深入Vue 必学高阶组件 HOC「进阶篇」

作者:ssh转发连接:https://mp.weixin.qq.com/s/seKoLSIMtTd1sU4uDrgZCA前言高阶组件这个概念在React中一度非常流行,但是在Vue的社区里讨论...

周末大礼包,23道高质量中级前端面试题。金九银十,建议收藏

这套面试题考察的内容比较常见,涉及到JavaScript、ES6、CSS、Vue、简单算法,浏览器相关知识等。题目列表1.JavaScript的数据类型有哪些2.什么是同源策略3.跨域的方法...

vue3.0-摒弃Object.defineProperty,基于 Proxy 的观察者机制

写在前面:11月16日早上,Vue.js的作者尤大大在VueToronto的主题演讲中预演了Vue.js3.0的一些新特性,其中一个很重要的改变就是Vue3将使用ES6的Proxy作...

程序员都必掌握的前端教程之VUE基础教程(七)

阅读本文约需要10分钟,您可以先关注我们,避免下次无法找到。本篇文章成哥继续带大家来学习前端VUE教程,今天主要讲解VUE的表单处理等知识点。下面我们就一起来学习该块内容吧!01简介在日常开发中,我...

web前端开之网站搭建框架之vue详解

网站搭建框架之vueVue是web前端快速搭建网站的框架之一。它与jQuery有所不同,是以数据驱动web界面(以操作数据改变页面,而jQuery是以操作节点来改变页面),同时,vue还实现了数据的双...

vue3.0尝鲜-基于 Proxy 的观察者机制探索

Vue.js的作者尤大大在VueToronto的主题演讲中预演了Vue.js3.0的一些新特性,其中一个很重要的改变就是Vue3将使用ES6的Proxy作为其观察者机制,取代之前使用...

TypeScript 设计模式之观察者模式

一、模式介绍1.背景介绍在软件系统中经常碰到这类需求:当一个对象的状态发生改变,某些与它相关的对象也要随之做出相应的变化。这是建立一种「对象与对象之间的依赖关系」,一个对象发生改变时将「自动通知其他...

vue面试3

1.单页面应用与多页面应用的去别2.简述一下Sass、Less,且说明区别?他们是动态的样式语言,是CSS预处理器,CSS上的一种抽象层。他们是一种特殊的语法/语言而编译成CSS。变量符不一样,les...

VUE v-bind 数据绑定

动态的绑定一个或多个attribute,也可以是组件的prop。缩写::或者.(当使用.prop修饰符)期望:any(带参数)|Object(不带参数)参数:attrOrP...

vue初学习之自定义选择框实现

v-model简单介绍在使用vue的过程中会经常用到input和textarea这类表单元素,vue对于这些元素的数据绑定和我们以前经常用的jQuery有些区别。vue使用v-model实现这些标签...

Vue实现拖拽穿梭框功能四种方式

一、使用原生js实现拖拽打开视频讲解更加详细Vue实现拖拽穿梭框功能的四种方式_哔哩哔哩_bilibili<html><head><meta...

Vue3.x setup 语法糖实现props双向绑定

1.背景为了封装一下Element-Plus的分页插件,需要实现父子组件之间的传值。2.父组件<scriptsetuplang="ts">letqueryPa...

取消回复欢迎 发表评论: