RAC資源帖

最近在斷斷續續的學習RAC,差很少兩個月的時間,學了120個小時左右。不得不說RAC的學習曲線十分陡峭,形成RAC難學的主要有幾點緣由:html

  1. 徹底不一樣的編程思想。日常咱們使用OC寫代碼都是面向對象的編程範式,而RAC倒是在OC語言環境下實現的函數式響應編程,簡稱FRP。這就須要咱們使用全新的思惟去組織代碼架構。
  2. 須要學習的方法較多。不像其餘框架,咱們只須要使用幾個經常使用的方法就能夠用的很好,RAC幾乎須要掌握所有的方法,由於在不一樣的場景你須要靈活組合運用這些函數。
  3. 傳統的iOS編程,對於網絡請求和響應,點擊事件,通知,KVO,代理這些異步事件都是分開處理,而RAC使用信號來統一包裝處理。這又是一種全新的思想,須要咱們掌握和理解。
  4. 就算把上面的全都理解了,可是對於怎麼在項目中運用RAC纔是最大的難點,由於RAC太抽象,新手徹底不知道從哪裏下手開始。就算用RAC寫項目,也會寫的四不像。

我建議學習iOS的同窗均可以學習下RAC,這是一種全新的編程思想(函數式響應編程),理解透徹了,能夠運用在任何語言。其實其餘語言都有對應的函數式編程框架,好比JS的RxJs,Java的RxJava等等,基本上流行的語言都有對應的Rx庫。react

前期學習RAC的時候,我花了大量的精力去搜集資料,而後篩選,在慢慢看。由於像RAC這種新的知識,只能經過蒐集網上的文章來學習,好的書籍基本上沒看到。ios

這篇博客主要是把本身在學習RAC過程當中的蒐集到資料整理出來,從初級到高級,還有對應的開源項目,讓你在學習RAC的過程當中不至於像我同樣處處蒐集而後篩選資料,浪費時間。git


什麼是函數式響應編程範式

咱們在學習一個知識點以前,不能僅僅學會如何使用,而是要知道這個知識點的前因後果,它能解決什麼痛點,有哪些優缺點,能不能解決你如今工做或者學習中遇到的問題,而後再決定是否須要花時間系統的學習。github

若是決定學習,就須要系統性而且深刻的學習,不能知足於從網上copy幾段代碼而後運用在項目裏面,就大言不慚的在簡歷上寫上精通RAC。編程

咱們學習一個框架,是要學習他的思想,而不是學會使用幾個API就完結了事,而後又就去追求新的知識。學習不是追求最新的技術潮流,而後在簡歷上寫上精通xxx,而是須要沉下心去研究,否則到最後只會喪失初心,愈來愈浮躁。segmentfault

廢話扯得有點多了,下面進入正題。網絡

開頭我就說過RAC是函數式響應編程框架,這裏包括兩個編程範式:函數式和響應式。下面這些資料能夠幫助你瞭解架構

  1. RP入門
  2. 函數式編程初探
  3. iOS開發下的函數響應式編程

RAC解決了什麼問題

咱們要開始學習一個新框架以前,確定須要作個背景調查:這個新框架能解決現有環境下的哪些編程痛點,是否值得我花精力去學習?框架

那麼下面幾篇文章會給你一個答案

  1. ReactiveCocoa - iOS開發的新框架

  2. Why Reactive(Cocoa)?

  3. ReactiveCocoa是Cocoa的將來

  4. Reactive Cocoa Tutorial [0] = Overview


對RAC的感性認識

由於RAC使用的是一種全新的方式來實現咱們平常的iOS編程中遇到的問題:

  • 包括過多的狀態依賴
  • 實現方式各異的消息傳遞機制(通知,代理,target-action)
  • MVC框架中的controller層過於臃腫。

下面這幾篇文章看完,相信你對RAC對於前兩個問題的優雅處理會有所體會,至於第三個問題,咱們稍後再議。

  1. MVVM Tutorial with ReactiveCocoa: Part 1/2

  2. MVVM Tutorial with ReactiveCocoa: Part 2/2


RAC經常使用命令

看了上面兩篇文章,相信你對RAC已經感興趣了吧,至少我以爲RAC對於傳統iOS編程的前兩個痛點的解決方式很是優雅。
下面咱們就要進行深刻學習了,第一步就是要了解RAC的各類經常使用命令的做用,雖然RAC的註釋寫的很是詳細,可是有的時候仍是看的雲裏霧裏,畢竟太過抽象,仍是直接經過代碼演示每一個命令的用途來的更加直接。

下面的文檔你能夠當作字典,遇到不懂就能夠來查詢下。

  1. 最快讓你上手ReactiveCocoa之基礎篇
  2. 最快讓你上手ReactiveCocoa之進階篇
  3. RAC 基本操做命令
  4. Reactive Cocoa Tutorial [4] = 只取所需的Filters

  5. Comparing replay, replayLast, and replayLazily ----> 對應的譯文

  6. flattenMap VS map + switchToLatest

  7. iOS-ReactiveCocoa使用之細說信號的訂閱

  8. iOS-ReactiveCocoa使用之RACCommand

  9. [譯]ReactiveCocoa基礎:理解並使用RACCommand

RAC+MVVM講解

相信我,若是你用過RAC+MVVM,你會愛上他們的組合的

  1. 【長篇高能】ReactiveCocoa 和 MVVM 入門
  2. iOS開發之ReactiveCocoa下的MVVM
  3. ReactiveCocoa2實戰
  4. iOS 7最佳實踐:一個天氣App案例(上)
  5. iOS 7最佳實踐:一個天氣App案例(下)
  6. MVVM 介紹

開源項目

把上面這些看完,你基本上能在本身的項目中小範圍使用RAC了,可是也僅限於使用下RAC的一些API寫一寫小功能,離真正理解RAC的思想還差得遠了。

這個時候你就須要閱讀大量開源的RAC項目來提升了,下面的項目會幫到你

  1. FunctionalReactivePixels
  2. MVVMReactiveCocoa(推薦)
  3. C41
  4. ReactiveViewModel

感慨

終於在11.1號到來的前半個小時寫完了,果真deadline纔是最佳生產力呀。

這篇真正意義來講不算是一篇博客,算是一個資源收集貼,水了一把,不過也寫了我兩個半小時。

好睏,(~﹃~)~zZ

更多文章請訪問個人我的博客:blog.ximu.site

相關文章
相關標籤/搜索