你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 干貨集中營

干貨集中營

編輯:IOS開發基礎

QQ截圖20160728185144.png

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

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

  • ReactiveCocoa

來自Mattt Thompson發布在 NShipster讓你對引入RAC這類FRP(Functional Reactive Programming)框架對編程范式的改變有個直觀的印象。

  • ReactiveCocoa與Functional Reactive Programming

來自蘑菇街的limboy解釋下RAC和FRP的關系。

深入淺出-iOS Reactive Cocoa的常見用法

簡書上看到的文章,從最基本的Demo開始。

  • 最快讓你上手ReactiveCocoa之基礎篇

  • 最快讓你上手ReactiveCocoa之進階篇

在這裡直接推薦了兩篇使用的文章。貌似會比較突然,但是作者覺得,Talk is cheap ,show me the code.(別裝逼了,亮代碼吧) 思想總歸是要用代碼來實現的,這部份內容偏實用,預計需要一周的時間才能掌握的差不多,可能你在學習的過程中,會遺忘,沒關系,思想的建立是一步一步的,學習這些代碼還是為了更好的建立思想(我也沒指望你一遍掌握RAC),至於代碼這篇文章,反正你是要看好幾遍的,第一次忘了就忘了。

  • Reactive Programming入門

之前的文章都是 functional Programming,和reactive programming,這裡偶然看到一篇響應式編程思想入門,強烈推薦。

  • iOS Reactive Cocoa使用淺析

  • ReactiveCocoa 討論會

這篇文章中講到了RAC自帶的debug插件,在學習RAC過程中的實踐,以及一些技術博文鏈接。

在學習過程中我們可能經常會聽見一些比較函數式風格的名詞,比如monad,functor等,學到這裡我找到了另外比較好的資料。

  • 函數式 Swift

  • Functor、Applicative 和 Monad

  • Swift Functors, Applicatives, and Monads in Pictures英文版

  • Functors, Applicatives, And Monads In Pictures英文版

第一本書籍可能花費的時間很長,不過這本書也是最有深度的,可以從中學到更多函數式的思想。

ReactiveCocoa2.x

非常不錯的RAC入門教程

ReactiveCocoa入門教程——第一部分對應的英文版

ReactiveCocoa入門教程——第二部分 對應的英文版

來自sunnyxx的博文。

Reactive Cocoa Tutorial [1] = 神奇的Macros

Reactive Cocoa Tutorial [2] = 百變RACStream

Reactive Cocoa Tutorial [3] = RACSignal的巧克力工廠

Reactive Cocoa Tutorial [4] = 只取所需的Filters

學了這麼多來一篇RAC結構分享的文章

ReactiveCocoa v2.5 源碼解析之架構總覽

用了這麼久的RAC,你可能不止一次聽到冷熱信號,也可能沒有意識到有些什麼是不對的,這裡給出來自美團的對冷熱信號的分析。

RACSignal的Subscription深入分析 - 美團點評技術團隊

細說ReactiveCocoa的冷信號與熱信號(一)

細說ReactiveCocoa的冷信號與熱信號(二):為什麼要區分冷熱信號

細說ReactiveCocoa的冷信號與熱信號(三):怎麼處理冷信號與熱信號

美團博文最後給出了一個冷熱信號可以轉換的方法,但是沒有講清楚,這裡有篇外國博文作為補充。

Comparing replay, replayLast, and replayLazily

這裡補充一篇對RAC的概述

說說ReactiveCocoa 2

RAC項目實戰

ReactiveCocoa2實戰

這樣好用的ReactiveCocoa,根本停不下來

iOS開發下的函數響應式編程

如果你認認真真的學習到了這裡,想必以及有了不錯的進步,接下來我們可以看下RAC的源碼實現了,看下這個龐然大物是如何實現這些神奇的功能的。

RAC核心元素與信號流

剖析@weakify 和 @strongify

ReactiveCocoa源碼閱讀之前序

ReactiveCocoa源碼閱讀之RACSignal(一)

ReactiveCocoa源碼閱讀之RACSignal(二)

ReactiveCocoa源碼閱讀之bind函數

ReactiveCocoa源碼閱讀之攻略flatten

ReactiveCocoa源碼閱讀之switchToLatest/combineLatestWith

ReactiveCocoa源碼閱讀之RACScheduler

MVVM With ReactiveCocoa

這部份主要講了RAC在MVVM中的表現,以及如何利用RAC在MVVM中做數據綁定這項核心操作。

MVVM與ReactiveCocoa的運用(Part1)

MVVM與ReactiveCocoa的運用(Part2)

MVVM Tutorial with ReactiveCocoa: Part 1/2

MVVM Tutorial with ReactiveCocoa: Part 2/2

MVVM With ReactiveCocoa

ReactiveCocoa4.x

在學習這部份的時候發現沒有合適的入門教程,所以就自己摸索著翻譯了部分。可以參看

ReactiveCocoa-Swift部分入門指南-Signal

ReactiveCocoa-Swift部分入門指南-SignalProducer

一份Reactive4文檔翻譯

ReactiveCocoa 4 文檔翻譯目錄

ReactiveCocoa4的詳細講解

ReactiveCocoa 4 圖解之一——事件(Event)

ReactiveCocoa 4 圖解之二——監聽器(Observer)

ReactiveCocoa 4 圖解之三——存根(Disposable)

至於四作者並沒給出,估計是挖的坑忘記填

ReactiveCocoa 4 圖解之五——信號(Signal)

ReactiveCocoa 4 圖解之六——信號發生器(SignalProducer)

RXSwift

使用自帶教程入門

RxSwift 入坑手冊 Part0 - 基礎概念

RxSwift 入坑手冊 Part1 - 示例實戰

快速指南系列

RxSwift快速指南(一)

RxSwift快速指南(二)

RxSwift快速指南(三)

RxSwift快速指南(四)

速查表

文末給出了我自己整理的RAC和RXSwift速查表,畢竟誰也不可能記得住那麼多方法和小技巧的。

ReactiveCocoa和RXSwift速查表

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved