函數語言程式設計-鏈式程式設計RAC

ytmaylover發表於2018-09-05

1 函數語言程式設計,鏈式程式設計定義

  • 準備工作:自定義一個基類重寫description 列印model 的時候能列印所有的屬性

    函數語言程式設計-鏈式程式設計RAC

  • OC 中應用函數語言程式設計,方法後面拼接()要能繼續執行下去,所有要有返回值,使用block,返回值式自己。

    函數語言程式設計-鏈式程式設計RAC

  • 方法的實現:

    函數語言程式設計-鏈式程式設計RAC

  • 直接返回return,簡寫如下:

    函數語言程式設計-鏈式程式設計RAC

2.swift是適合函數語言程式設計 ,方法後面帶有(),如果需要執行下去,加上返回值是自己的就可以鏈式程式設計下去。

  • 形式

    函數語言程式設計-鏈式程式設計RAC

  • 實現

    函數語言程式設計-鏈式程式設計RAC

3.響應式程式設計RAC - 整合注意點

  • 選擇框架

    • 純 swift 專案,繼續使用 ReactiveCocoa 。但是 RAC 依賴於 ReactiveSwift ,等於你引入了兩個庫。
    • 純 OC 專案,需要使用 ReactiveObjC 。這個庫裡面包含原來 RAC 2的全部程式碼。
    • 專案是 swift 和 OC 混編,需要同時引用 ReactiveCocoa 和 ReactiveObjCBridge 。但是 ReactiveObjCBridge 依賴於 ReactiveObjC ,所以你就等於引入了 4 個庫。
  • 整合環境配置

    • 如果專案不是純OC專案,那麼編輯Podfile檔案新增了pod 'ReactiveCocoa', '~> 5.0.3'以後一定別忘了新增一行use_frameworks!用於生成動態連結庫。

    • Xcode8匯入時因為Swift2.3與Swift3.0的關係,匯入後,無法成功編譯程式,工程會彈出一個選擇框,最好選第一個later,跳過swift編譯。之後修改pod專案的Bulid Settings裡搜swift_version之後把Swift Language Version變成3.0在使用command+shift+k進行clear下專案就OK了。

4.RAC應用

  • iOS中的事件

    • 目標(方法),代理,通知,KVO,時鐘,網路
    • rac_signalForControlEvents target
    • rac_signalForSelector 代理
    • rac_addObserverForName 通知
    • rac_valuesAndChangesForKeyPath KVO
  • 建立訊號RACSignal createSignal

    函數語言程式設計-鏈式程式設計RAC

  • 訊號, RACSignal

  • 狀態:

    • 熱訊號:有訂閱者,一旦訂閱資訊,就會執行
    • 冷訊號 只是定義,沒有訂閱,只是訊號物件,不會工作

5.訂閱者: 檢視控制器需要知道載入資料的情況

  • 訂閱三種型別,next ID型別,error:出錯處理,completion表示訊號完成

  • 載入過後訂閱

    函數語言程式設計-鏈式程式設計RAC

6.RAC系統學習

  • ReactiveCocoa常見類有哪些?
    • RACSignal:表示有資料傳遞的時候
    • RACDisposable:取消訂閱訊號
    • RACSubscriber:訂閱者,傳送資料

相關文章