一 前提:  

    在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

IOS ReactiveCocoa的更多相关文章

  1. [iOS]ReactiveCocoa安装方法

    1. 替换Ruby镜像 我们想要使用CocoaPods来安装ReactiveCocoa.由于OS X上的Ruby镜像被墙了,感谢淘宝为我们提供了国内访问镜像. $ gem sources --remo ...

  2. iOS ReactiveCocoa(RAC)学习详解

    概述: ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的一个框架,有时间,自己也了解学习了一下这个框架的一些基本的应用,其实你要学的话网上是有很多很多的博 ...

  3. iOS ReactiveCocoa的使用

    一.ReactiveCocoa简介 reactiveCocoa简称RAC,它是一个三方框架,很多人把它叫做函数响应式编程框架,因为它具有函数式编程和响应式编程的特性. 由于该框架的编程思想,使得它具有 ...

  4. iOS ReactiveCocoa简单使用笔记

    涉及对象: 两个输入框,一个按钮. 代码功能: 随时监测输入框内容的长度变化,并在输入内容不符合预设要求时,立即改变输入框背景色. 在两个输入框的内容都符合预设要求时,按钮才可用. RACSignal ...

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

    本文适合有一定RAC基础的童鞋做不时的查询,所以本文不做详细解释. 一.常见类 1.RACSiganl 信号类. RACEmptySignal :空信号,用来实现 RACSignal 的 +empty ...

  6. iOS Reactivecocoa(RAC)知其所以然(源码分析,一篇足以)

    前言 如今RAC大行其道,对其讲解的博客也多不胜数,稍微有点经验的估计也已经对这个爽到不要不要的框架运用自如了,真正沉下来研究其实现原理的估计也不在少数,这里仅仅是记录一下自己的分析理解,更是在写这篇 ...

  7. iOS开发ReactiveCocoa学习笔记(六)

    RAC操作方法三. demo地址:https://github.com/SummerHH/ReactiveCocoa.git doNext deliverOn timeout interval del ...

  8. iOS-----GitHub上比较齐全的iOS 工具和App

    Github-iOS 工具 和 App   系统基础库 Category/Util sstoolkit 一套Category类型的库,附带很多自定义控件 功能不错-       BFKit 又一套Ca ...

  9. iPhone Tutorials

    http://www.raywenderlich.com/tutorials This site contains a ton of fun written tutorials – so many t ...

随机推荐

  1. CSS控制表格(table)样式

    CSS控制表格样式 /* 合并边框重叠部分 */ table{border-collapse:collapse;} /* 单元格边框 */ td{border:1px solid #A7AEB1;}

  2. PHP文件上传至另一台服务器

    PHP程序上传文件时,想指定上传到另一台服务器. move_uploaded_file这个方法第二个参数指定的存放路径需要和php程序文件一个服务器,没办法指定其他服务器的地址,本人才疏学浅,哪位大哥 ...

  3. Fedora中允许mysql远程访问的几种方式

    Fedora中允许mysql远程访问,可以使用以下两种方式:a.改表. mysql>use mysql; mysql>update user set host = '%' where us ...

  4. Spring配置文件中使用表达式

    在配置文件中使用Java类 <bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieR ...

  5. 昨天开发引入的两个错误--Parcelable

    以下的代码有两处明显的错误,一不小心就会写出如下错误的代码,其中第2个问题调试起来很麻烦: 1 public class AddedBannerInfo implements Parcelable { ...

  6. 一、CoreAnimation之图层树详解

    CoreAnimation :在字面意思为“核心动画”,但是如果您认为它仅仅是一个动画框架,那可能就要错过一些经典功能了.动画,只是CoreAnimation功能的一小部分,毕竟人家的源头是一个叫做L ...

  7. Excel 回归分析

    1 分析两个变量和一个因变量的关系 降水,温度与生长的关系曲线 降水是连续的数,温度有三个温室,每个温室一个温度,生长也是连续的数. 作图的方法是将降水放在一列,然后生长根据温度放三列,同一个温度的放 ...

  8. 学习android推荐网站

    1. Android Developers 作为一个Android开发者,官网的资料当然不可错过,从设计,培训,指南,文档,都不应该错过,在以后的学习过程中慢慢理解体会. 2. Android Gui ...

  9. linux允许80端口通过

    yum重装 http://www.07net01.com/storage_networking/Red_Hat_6_2_64ruheshiyongCentosdeYUMyuangengxinfangf ...

  10. python+selenium 简单尝试

    前言 selenium是一种自动化测试工具,简单来说浏览器会根据写好的测试脚本自动做一些操作. 关于自动化测试,一开始接触的是splinter,但是安装的时候发现它是基于selenium的,于是打算直 ...