1. 程式人生 > >乾貨集中營-ReactiveCocoa+RXSwift+MVVM

乾貨集中營-ReactiveCocoa+RXSwift+MVVM

學習函式響應式程式設計已經接近兩個月的時間。說實話堅持下來實在不易。兩個月的時間看過近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的關係。

簡書上看到的文章,從最基本的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速查表,畢竟誰也不可能記得住那麼多方法和小技巧的。

學習交流

這裡給出本人的iOS技術交流群,有興趣探討技術問題的小夥伴們可以加群交流

1群 173499350
2群 532084214

相關推薦

乾貨集中營-ReactiveCocoa+RXSwift+MVVM

學習函式響應式程式設計已經接近兩個月的時間。說實話堅持下來實在不易。兩個月的時間看過近150篇博文,算下來啃下來一本千頁的技術書籍也差不多。不過隨著知識面的拓廣,學習起來也更加順利。本篇文章主要整理下自己收集的學習路線。其中包括了函數語言程式設計的思想,ReactiveCoco

RxSwift MVVM實操-從一個註冊demo說起

背景 在學習了RxSwift官方的demo以及各種操作符後,對RxSwift會有一個大致的瞭解,但在實際開發過程中並不是有很多機會去使用,主要是因為使用生疏的開發技能會帶來開發時間上與產品質量上的風險,為了避免”不熟悉->不敢用->用的少->

乾貨集中營app製作

前一陣利用一些免費的api介面做了一個新聞類的app,挺簡陋的,但是自己用著還是可以的。後來看到個乾貨集中營的api,裡面的內容是一些大神們分享在github上的開源專案,非常值得學習。既然提供給了我們api,那麼我們就得好好利用一下了。於是我就做了一個手機app來看學習一下

乾貨集中營App】

前言: 一個練手的安卓app ,Api介面來源:http://gank.io/api,非常感謝程式碼家。 應用描述: 乾貨集中營是一個技術乾貨共享平臺。每個工作日,網站都會分享一些技術乾貨資訊,包括Android、iOS、App等技術乾貨,除此之外還有福利

flutter開發的乾貨集中營客戶端

簡介 乾貨集中營是一款根據 Gank.io 官方提供的api實現的Gank客戶端,包含最新資料展示,分類列表讀取(Android,iOS,前端,休息視訊,拓展資源,瞎推薦,App),妹紙瀑布流圖片功能。 後續版本會陸續實現歷史乾貨,提交乾貨,github登入功能。 應用截圖

關於程式碼家(乾貨集中營)共享知識點彙總系列——IOS

關於程式碼家(乾貨集中營)共享的所有知識點IOS部分的彙總,後續每週會對其進行更新 更多內容請選擇以下入口 關於程式碼家(乾貨集中營)共享知識點彙總系列——Android 關於程式碼家(乾貨集中營)共享知識點彙總系列——IOS 關於程式碼家(乾貨集中營)共享知識

關於程式碼家(乾貨集中營)共享知識點彙總系列——Android

關於程式碼家(乾貨集中營)共享的所有知識點Android部分的彙總,後續每週會對其進行更新 之前的分類總結點此,其中所有的知識點都包含在這個裡面 更多內容請選擇以下入口 關於程式碼家(乾貨集中營)共享知識點彙總系列——Android 關於程式碼家(乾貨集中營)

關於RxSwift MVVM flatMapLatest 點選事件網路請求失敗整個序列結束

例子 先上程式碼吧: self.signedIn = input.loginTaps.withLatestFrom(usernameAndPassword) .flat

基於ReactiveCocoaMVVM設計的購物車基本操作實現程式碼解析

購物車單選全選價格計算數量增刪等等操作…RAC皆統統搞定.就是這麼cool~ 開始之前你需要了解的 配置CocoaPods gem install cocoapods ##使用RVM安裝的Ruby不需要sudo

Kotlin完成乾貨集中營APP

使用kotlin完成乾貨集中營所有乾貨的APP 效果圖: 專案地址 (歡迎Star)點選開啟專案連結(https://github.com/MrGaoGang/KotlinGank) 效果圖 此Gif圖顯示較快,可在apk目錄中下載apk 很幸運和大家分享一個乾

乾貨集中營 ~ GankIOClient

簡介 利用乾貨集中營 , daimajia和他的小夥伴給我們開發者帶來的福利開發的一個乾貨集中營客戶端,主要功能在閱讀乾貨上。 Github地址: https://github.com/onl

關於"乾貨集中營"的一個開源App

中秋佳節,玩了一天,擼了兩天程式碼,搞出這麼個東東,共享出來,小夥伴們如果有興趣,歡迎添磚加瓦。使用到的技術清單如下:1.greenDao2.Retrofit3.CardView4.RecyclerVi

gank.io——乾貨集中營客戶端

乾貨集中營 專案說明 網路請求:rxjava+retrofit框架 實現功能 分類列表:每日推薦、分類瀏覽、妹子圖 分享(QQ) 乾貨閱讀(網頁) 更多參見readm

iOS開發之ReactiveCocoa下的MVVM乾貨分享)

最近工作比較忙,但還是出來更新部落格了,今天給大家分享一些ReactiveCocoa以及MVVM的一些東西,幹活還是比較足的。在之前發表過一篇博文,名字叫做,大體上講的就是使用Block回撥的方式實現MVVM的。在寫上篇文章時也知道有ReactiveCocoa這個函式響應式程式

android開發框架總結 (二)MVP與MVVM詳細介紹與對比,如何選擇適合的框架(乾貨!)

前言 本篇文章將非常“細緻”地總結分析MVP與MVVM這兩種框架對於架構的選擇做了比較多的分析,應該是乾貨滿滿,如果你對這兩者的使用與選擇上還有迷惑之處。真的希望你能認真看完。 如果你是非常有經驗的程式猿,那就當相互學習總結,如果有不同看法還望指教。當然,我也是非常想進步的。  

MVVM With ReactiveCocoa

MVVM 是一種軟體架構模式,它是 Martin Fowler 的 Presentation Model 的一種變體,最先由微軟的架構師 John Gossman 在 2005 年提出,並應用在微軟的 WPF 和 Silverlight 軟體開發中。MVVM 衍生於 MVC ,

iOS開發之ReactiveCocoa下的MVVM

最近工作比較忙,但還是出來更新部落格了,今天給大家分享一些ReactiveCocoa以及MVVM的一些東西,幹活還是比較足的。在之前發表過一篇博文,名字叫做,大體上講的就是使用Block回撥的方式實現MVVM的。在寫上篇文章時也知道有ReactiveCocoa這個函式響應式程式設計的框架,並且有許多人用它來更

Monad新解-FRP對比——ReactiveCocoaRxSwift、Bacon以及背後的Functional

ReactiveX Rx的Observable的本質就是一個Event Monad,即上下文(就是圖文教程中包裹的盒子)為Event的一個Monad,這裡的Event定義,可以對應語言的struct或者enum,包括了next、error和complete三個上下文即可。這裡擷取的是Swift語言的實現,m

MVVMReactiveCocoa 的運用(1)

MVVM和資料繫結 MVVM模式依賴於資料繫結,能自動將物件屬性和UI controls相聯絡是其框架級的特性. 舉個例子,在微軟的WPF框架裡,ViewModel將TextField裡的Text屬性和Username屬性繫結,如下所示: Objective-C

MVVMReactiveCocoa 的運用(2)

繫結,繫結,繫結(重要的實情說三遍) RACCommand能實時地更新search按鈕的狀態,但是時候來處理activity indicator的可見狀態了. RACCommand擁有一個執行的屬性,它是用來表示命令開始和結束執行時反應真假事件的訊號量.你可以通過這個訊號量來反映程式中當前命令執行的狀態