ReactiveCocoa -函数式编程和响应式编程

RAC具有函数式编程和响应式编程的特性。它主要吸取了.Net的 Reactive Extensions的设计和实现。

ReactiveCocoa试图解决什么问题

ReactiveCocoa试图解决以下3个问题:

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

 

统一消息传递机制

iOS开发中,每一行代码几乎都是在相应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过 CoreLocation)。但是这些事件都用不同的方式来处理,比如包括KVO、Notification、delegation、block以及target-action方式。。ReactiveCocoa为事件定义了一个标准接口,从而可以使用一些基本工具来更容易的连接、过滤和组合。使得以上各种消息传递机制都可以用RAC来完成

 

由于Objective-C语言的内存管理是基于引用计数 的,为了避免循环引用问题,在block中如果要引用self,需要使用@weakify(self)@strongify(self)来避免强引用。另外,在使用时应该注意block的嵌套层数,不恰当的滥用多层嵌套block可能给程序的可维护性带来灾难。

参考资料:

http://www.cocoachina.com/ios/20150123/10994.html

http://www.devtang.com/blog/2014/02/11/reactivecocoa-introduction/

posted @ 2015-07-30 00:03  沧海小鱼儿  阅读(298)  评论(0编辑  收藏  举报