函数式编程-链式编程RAC

1,380 阅读2分钟

1 函数式编程,链式编程定义

  • 准备工作:自定义一个基类重写description 打印model 的时候能打印所有的属性

  • OC 中应用函数式编程,方法后面拼接()要能继续执行下去,所有要有返回值,使用block,返回值式自己。

  • 方法的实现:

  • 直接返回return,简写如下:

2.swift是适合函数式编程 ,方法后面带有(),如果需要执行下去,加上返回值是自己的就可以链式编程下去。

  • 形式

  • 实现

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

  • 信号, RACSignal

  • 状态:

    • 热信号:有订阅者,一旦订阅信息,就会执行
    • 冷信号 只是定义,没有订阅,只是信号对象,不会工作

5.订阅者: 视图控制器需要知道加载数据的情况

  • 订阅三种类型,next ID类型,error:出错处理,completion表示信号完成

  • 加载过后订阅

6.RAC系统学习

  • ReactiveCocoa常见类有哪些?
    • RACSignal:表示有数据传递的时候
    • RACDisposable:取消订阅信号
    • RACSubscriber:订阅者,发送数据