IOS ReactiveCocoa

 一 前提:  

    在iOS开发过程中,当某些事件响应时,需处理的某些业务逻辑

      Eg. 按钮点击:action

        ScrollView滚动:delegate

        属性值改变:KVO

  ReactiveCocoa为事件提供了很多的处理方法,而且利用RAC处理事件很方便,可以把要处理的事件和监听代码放在一起,这样便于管理,不需要跳到对应的方法中,非常符合高聚合,低耦合的思想

 二 ReactiveCocoa整体结构介绍:

    1 信号源(事件流)RACStream

    2 订阅者 RACSubscriber:在使用-subscriberNext:^(id x){}的方法订阅信号源进行处理后会生成一个清洁工RACDisposable,然后手动调用-dispose方法来进行清理工作

    3 调度器 RACScheduler

    4 清洁工 RACDisposable:他封装了取消和清理一次订阅所必须的工作,有一个核心的方法:-dispose,调用这个方法就会执行相应的清理工作,类似于NSObject的-dealloc方法

 三  ReactiveCocoa响应式编程框架:

    ReactiveCocoa中常用的是RACSignal,RACSignal继承自RACStream,Stream,即事件流,事件流是一个按时间排序的Events序列  

四  主要内容:

    1 RACSignal:RAC中最核心的类

      信号类,一般表示将来有数据传递,只要有数据改变,信号内部接收到数据,就会马上发出信号。这个类本身不具有发送信号的能力,而是交给内部的一个订阅者去做

      默认的信号都是冷信号,也就是值改变了也不会触发,只有订阅了这个信号,这个信号才会变为热信号,值改变后才会触发,可以通过RACSignal的subscriberNext的方法进行订阅

    2 RACSubscriber:

      订阅者,用于发送信号,这是一个协议,不是一个类,只有遵守这个协议,并且实现方法才能成为一个订阅者,通过creat创建的信号,都有一个订阅者帮他发送数据

    3 RACDisposable:

      用于取消订阅或清理资源,不想监听某个信号时,可以通过她主动地取消订阅信号

    4 RACSubject:

      信号提供者,自己可以充当信号,又能发送信号,通常用来代替代理

    5 RACTuple:

      元组类,类似于NSArray,用来包装值

    6 RACCommand:

      RAC中用于处理事件的类,可以把事件如何处理,事件中的数据如何传递,包装到这个类中,可以很方便的监控事件的执行过程,用于监听网络请求,按钮点击

    7 RACSequence:

      RAC中的集合类,用于代替NSArray,可以用来快速的遍历数组和字典

    8 RACMulticastConnection:

      用于当一个信号,被多次订阅时,为了保证创建信号时,避免多次调用创建信号中的block,造成副作用,可以被这个类处理

    9 RACScheduler:

      RAC中的队列,用GCD封装

    10 RACUnit:

      表示Stream不包含有意义的值,可以直接理解为nil

    11 RACEvent:

      把数据包装成信号事件(signal envent)

五 ReactiveCocoa开发的常见用法:

     1 代替代理: rac_signalForSelector

     2 代替KVO,监听某个对象属性改变:rac_valueAndChangesForKeyPath

     3 监听事件:rac_signalForControlEvents

     4 代替通知:rac_addObserveForName

     5 监听文本框文字改变(只要文本框改变就会发出信号):rac_textSignal

     6 处理当界面有多次请求时,需要都获取到数据时,才能显示界面:rac_liftSelector:withSignalFormArray:Sihanls: 当传入的signals(信号数组),每一个signal都至少sendNext一次,就会去触发第一个selector参数的方法

六 参考链接:

    iOS ReactiveCocoa使用浅析:http://www.jianshu.com/p/25922584bc43

    最快让你上手ReactiveCocoa之基础篇:http://www.jianshu.com/p/87ef6720a096

时间: 2024-10-22 06:31:31

IOS ReactiveCocoa的相关文章

[iOS]ReactiveCocoa安装方法

1. 替换Ruby镜像 我们想要使用CocoaPods来安装ReactiveCocoa.由于OS X上的Ruby镜像被墙了,感谢淘宝为我们提供了国内访问镜像. $ gem sources --remove https://rubygems.org/ $ gem sources -a http://ruby.taobao.org/ 2. 安装CocoaPods CocoaPods是第三方类库安装工具,开发必备.用到sudo可能需要输入本机管理员密码. sudo gem install cocoap

[转] iOS --- ReactiveCocoa - iOS开发的新框架

转载唐巧的博客:ReactiveCocoa - iOS开发的新框架

iOS ReactiveCocoa简单使用笔记

涉及对象: 两个输入框,一个按钮. 代码功能: 随时监测输入框内容的长度变化,并在输入内容不符合预设要求时,立即改变输入框背景色. 在两个输入框的内容都符合预设要求时,按钮才可用. RACSignal *validField1Signal = [self.field1.rac_textSignal map:^id(NSString *text){ return @([self isValidInput:text]); }]; RAC(self.field1,backgroundColor) =

iOS ReactiveCocoa 常用API整理

声明:本文转载自王隆帅 一.常见类 1.RACSiganl 信号类. RACEmptySignal :空信号,用来实现 RACSignal 的 +empty 方法: RACReturnSignal :一元信号,用来实现 RACSignal 的 +return: 方法: RACDynamicSignal :动态信号,使用一个 block - 来实现订阅行为,我们在使用 RACSignal 的 +createSignal: 方法时创建的就是该类的实例: RACErrorSignal :错误信号,用来

iOS ReactiveCocoa 最全常用API整理(可做为手册查询)

本文适合有一定RAC基础的童鞋做不时的查询,所以本文不做详细解释. 一.常见类 1.RACSiganl 信号类. RACEmptySignal :空信号,用来实现 RACSignal 的 +empty 方法: RACReturnSignal :一元信号,用来实现 RACSignal 的 +return: 方法: RACDynamicSignal :动态信号,使用一个 block - 来实现订阅行为,我们在使用 RACSignal 的 +createSignal: 方法时创建的就是该类的实例: R

GitHub上史上最全的iOS开源项目分类汇总

学了这么久,还是抽时间把github上比较好用的第三方总结了一下: Category/Util sstoolkit 一套Category类型的库,附带很多自定义控件 功能不错-       BFKit 又一套Category类型的 Kit,还有几个工具类       APUtils 又一套Category类型的 Kit       QSKit 又一套Category类型的 Kit       iOS-Categories 又一套Category类型的 Kit       BlocksKit 将B

iOS 完整项目 学习 DEMO 动画整理

史上最热,最严CJ在魔都如火如荼进行中,小编也抓住机会,给大家带来不一样的分享(害羞捂脸,其实也没有拍啥,就拍MM) <ignore_js_op> <ignore_js_op> 好热,需要降温 .... 其实还有很多,但是领导说:“在搞什么东西,聊技术ok?”所以接下来就进正题吧- [一周精品源码][Swift]PullToMakeSoupPullToMakeSoup 是一个下拉刷新控件,自定义动画效果,效果如gif图所示,可以轻松的加在UIScrollView之上.http://

IOS响应式编程框架ReactiveCocoa(RAC)使用示例

ReactiveCocoa是响应式编程(FRP)在IOS中的一个实现框架,它的开源地址为:https://github.com/ReactiveCocoa/ReactiveCocoa# :在网上看了几篇文章,感觉理论讲了很多,但是代码还是看不太懂,于是自己把它github文档上的一些使用的经典示例实现了一下,项目中有需要时可以直接搬过去用,用的熟练了再读源码也比较容易理解. 例1. 监听对象的成员变量变化,当成员变量值被改变时,触发做一些事情. 这种情况其实就是IOS KVO机制使用的场景,使用

使用ReactiveCocoa实现iOS平台响应式编程

使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍一下FRP(Functional Reactive Programming,响应式编程),在维基百科中有这样一个例子介绍: 在命令式编程环境中,a = b + c 表示将表达式的结果赋给a,而之后改变b或c的值不会影响a.但在响应式编程中,a的值会随着b或c的更新而更新. Excel就是响应式编程的一个例子.单元格可以包含字面值或类似"=B1+C1″的公式,