ReactiveCocoa(RAC)

– 基于响应式编程的第三方框架

函数响应式编程 (FRP)

一种和事件流有关的编程模式,关注导致状态值改变的行为事件,一系列的事件组成了事件流。

思想示例: C = A + B (编程代码)

使用FRP :C值依赖于A和B的值
程序运行过程中:
1.初始化 A = 1 , B = 2 时 C = 3
2.程序运行过程中,若A值发生改变 A =  2 ,那C也将对应改变   C = 4
3.运行过程中,若B值发生改变 B = 5 ,那C 对应改变  C = 7 

RAC试图解决的问题

  • 传统 iOS 开发过程中,状态以及状态之间依赖过多的问题
  • 传统 MVC 架构的问题:Controller 比较复杂,可测试性差
  • 提供统一的消息传递机制

RAC核心概念

  • Signal(信号)
    • Completer(完成)
    • Error(错误)
  • Subscribe(订阅)
    • Next(下一步)

RAC基本使用

1
2
3
4
5
UITextField *textField = [[UITextField alloc] init];
//创建文本信号并订阅,若产生信号则执行next事件(block内容)
[textField.rac_textSignal subscribeNext:^(id x) {
//code...
}];

RAC Next事件的限制和内容转化

  • Map(转化)
    可以将信号内容转化为任意对象
  • Filter(过滤)
    设置Next执行的要求

RAC相关资源链接