ios编程之ReactiveCocoa框架

一 简介

   ReactiveCocoa是支持函数式响应式编程(functional reactive programming)的框架,由GitHub开发参考这里的简介,官方网址为:https://github.com/ReactiveCocoa.


二 优点

(1) 代码更精简

越少的代码,相对效率更高

(2) 封装了KVO

框架将state的变化转化为signal来处理,可以方便地实现对key和value的观察;


上图很好地阐述了使用信号(RACSignal)来取代之前的:

  • delegate
  • block callbacks
  • target action
  • kvo
  • notifications
这些异步信息流

(3) 逻辑更清晰,可维护性更高

之前的代码大量使用delegate,notification等来处理回调结果,逻辑分散

(4) 函数本身可以作为参数,也可作为返回值


三 基础知识[参考来源]

Signal

    在Reactive Cocoa中,RASSignal是一个基本组件,代表会传递到未来的事件流。
订阅了该信号的对象在该事件发生时可以对事件进行相应响应。
    Signal是一个推送驱动(push-driven)的流,能代表按钮点击、异步网络操作、定时器、其它UI
事件及任何其它随时间改变的事物。
Sequence
    Sequence 是一个拉取型(push-driven)的流,类似NSArray目的的集合(Collection)。RACSequence允许CocoaCollections以统一和声明式方式执行。

Command

   RACCommand创建了一个signal的订阅者从而响应某个动作。ReactiveCocoa对绝大部分UIKit

Controls提供了丰富的UI事件处理,方便对不同场景绘制相应的UI效果。

Signal Operations:

针对RACSignals进行的基本操作及函数原型如下:

(1)Merge

+ (RACSignal *)merge:(id<NSFastEnumeration>)signals;


(2)CombineLates

+ (RACSignal *)combineLatest:(id<NSFastEnumeration>)signals reduce:(id (^)())reduceBlock;


(3)FlatternMap

-(RACSignal*)flattenMap:(RACStream * (^)(id value))block;


(4)Legend

+ [FBSession rac_openedSession]

返回打开的FB会话类实例,在必要时引向Facebook登陆。

- [FBSession rac_fetchProfile]

接受会话的简介( profile )

(5)Filter

- (RACSignal *)filter:(BOOL (^)(id value))block;


(6)Map

- (RACSignal *)map:(id (^)(id value))block;


(7)Zip

+ (RACSignal *)zip:(id<NSFastEnumeration>)streams reduce:(id (^)())reduceBlock;


(8)Throttle

- (RACSignal *)throttle:(NSTimeInterval)interval;


(9)Delay

-(RACSignal *)delay:(NSTimeInterval)interval;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值