ReactiveCocoa

A framework for composing and transforming streams of values

ReactiveCocoa(RAC)是由Github 开源的一个应用于iOS和OS X开发的新框架。用于函数式反应型编程,它提供了组合和转化数据流的API。代替专注于编写串行的代码 – 执行有序的代码队列 – 可以响应非确定性事件。RAC具有函数式编程和响应式编程的特性。它主要吸取了.Net的 Reactive Extensions的设计和实现。本文将详细介绍该框架试图解决什么问题,以及其用法与特点。

  • 对未来数据的进行组合操作的能力。
  • 减少状态和可变性。
  • 用声明的形式来定义行为和属性之间的关系。
  • 为异步操作带来一个统一的,高层次的接口。
  • 在KVO的基础上建立一个优雅的API。

ReactiveCocoa试图解决什么问题

经过一段时间的研究,我认为ReactiveCocoa试图解决以下3个问题:

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

我们在开发iOS应用时,一个界面元素的状态很可能受多个其它界面元素或后台状态的影响。

例如,在用户帐户的登录界面,通常会有2个输入框(分别输入帐号和密码)和一个登录按钮。如果我们要加入一个限制条件:当用户输入完帐号和密码,并且登录的网络请求还未发出时,确定按钮才可以点击。通常情况下,我们需要监听这两个输入框的状态变化以及登录的网络请求状态,然后修改另一个控件的enabled状态。

Podfile
1
pod 'ReactiveCocoa', ‘2.0'

KeyValue

REF::