ReactiveCocoa(其简称为 RAC)是由 Github 开源的一个应用于 iOS 和 OS X 开发的新框架。它主要吸取了 .Net 的 Reactive Extensions 的设计和实现。
ReactiveCocoa 可以说是结合了函数式编程和响应式编程的框架,也可称其为函数响应式编程(FRP)框架,强调一点,RAC虽然最大的优点是提供了一个单一的、统一的方法去处理异步的行为,包括delegate方法,blocks回调,target-action机制,notifications和KVO.
最大的与众不同是提供了一种新的写代码的思维,由于RAC将Cocoa中KVO、UIKit event、delegate、selector等都增加了RAC支持,所以都不用去做很多跨函数的事。
如果全工程都使用RAC来实现,对于同一个业务逻辑终于可以在同一块代码里完成了,将UI事件,逻辑处理,文件或数据库操作,异步网络请求,UI结果显示,这一大套统统用函数式编程的思路嵌套起来,进入页面时搭建好这所有的关系,用户点击后妥妥的等着这一套联系一个个的按期望的逻辑和次序触发,最后显示给用户。
RAC 确实和其它的开源库性质上差别比较大,思想方面需要学习的比较多。
RAC学习,关键是思想。所以,一定要先从 “道” 上建立思想,然后从 “术” 上掌握使用,最后才是通览源码,掌握其原理。
总结了几个适用的场景。RAC 总结来说就是:数据随着时间而产生,所以能想到的三点比较适合用 RAC:
一、UI 操作,连续的动作与动画部分,例如某些控件跟随滚动。
二、网络库,因为数据是在一定时间后才返回回来,不是立刻就返回的。
三、刷新的业务逻辑,当触发点是多种的时候,业务往往会变得很复杂,用 delegate、notification、observe 混用,难以统一。这时用 RAC 可以保证上层的高度一致性,从而简化逻辑上分层。
只要有通知的业务逻辑,RAC 都方便有效化解。
概括的说,应该就是统一所有异步事件吧。
不适用的场景,与时间无关的,需要积极求解的计算,例如视图的单次渲染。