本文介绍ios框架ReactiveCocoa,这个框架最大的特点就是:直观,灵活。直观的代码容易编写,阅读和维护,能够很好的适应需求的变更,最重要的是高效。
什么是ReactiveCocoa
ReactiveCocoa(简称RAC)是由github上开源的一个ios框架,目前最新版本已经支持swift语言。RAC具有函数式编程和响应式编程的特性。
是ios平台对FRP的实现,FRP的核心思想是信号传递,信号在ReactiveCocoa(RAC)中主要是通过RACSignal来表示,信号数据流,可以绑定和传递。
可以把信号想象成水龙头,只不过里面不是水,而是玻璃球(value),直径跟水管的内径一样,这样就能保证玻璃球是依次排列,不会出现并排的情况(数据都是线性处理的,
不会出现并发情况)。水龙头的开关默认是关的,除非有了接收方(subscriber),才会打开。这样只要有新的玻璃球进来,就会自动传送给接收方。可以在水龙头上加一个过滤嘴(filter),不符合的不让通过,也可以加一个改动装置,把球改变成符合自己的需求(map)。也可以把多个水龙头合并成一个新的水龙头(combineLatest:reduce:),这样只要其中的一个水龙头有玻璃球出来,这个新合并的水龙头就会得到这个球。
为什么要用ReactiveCocoa
native app有很长一段时间都是在等待事件发生,然后响应事件,比如等待网络请求的返回,用户交互完成,等待某些状态改变等等。等待这些事件完成之后在做进一步的处理,ios中通常使用Notification,delegate,block,KVO等来实现,常常不知道使用哪一种合适,有时需要等待几个事件都完成之后再进行下一步操作,这个时候就需要定义多个状态变量,随着需求的复杂度增加,定义的状态变量增多,代码维护和可读性大大降低。
总结一句就是:ReactiveCocoa就是以一种统一的方式实现了Notification,delegate,block,KVO,UI Event, NetWork ,Arync Task功能,它们在本质上就是值的变化。
初级教程
第一部分:Reactive入门教程---第一阶段
第二部分:Reactive入门教程---第二阶段
进阶教程
http://www.cocoachina.com/ios/20150702/12302.html
http://blog.csdn.net/xdrt81y/article/details/30624469
https://tech.meituan.com/RACSignalSubscription.html
http://www.cocoachina.com/industry/20140621/8905.html
http://www.cocoachina.com/industry/20140609/8737.html
http://www.cocoachina.com/industry/20140115/7702.html
http://nshipster.com/reactivecocoa/
https://www.bignerdranch.com/blog/data-driven-ios-development-reactivecocoa/
https://www.teehanlax.com/blog/getting-started-with-reactivecocoa/
http://nshipster.cn/reactivecocoa/
http://www.cocoachina.com/ios/20150526/11930.html
书籍推荐
《Functional Reactive Programming on iOS》