一 前提:  

    在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. Total Commander 集成、调用 Beyond Compare比较文件

    1.打开wincmd.ini文件 2.在[Configuration]节下加入 Comparetool=d:\Program Files\小工具\Beyond Compare 3\BCompare.e ...

  2. ReactiveCocoa源码拆分解析(二)

    (整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 上面抽丝剥茧的把最主要的信号机制给分离开了.但在RA ...

  3. DAY5 DVWA之SQL注入演练(low)

    1.设置 把安全等级先调整为low,让自己获得点信心,免得一来就被打脸. 2.测试和分析页面的功能       这里有一个输入框 根据上面的提示,输入用户的id.然后我们输入之后,发现它返回了关于这个 ...

  4. 安装配置LDAP遇到的问题

    问题1:安装完启动ldap服务报错: ldap: unrecognized service? 原因在于新版的openldap将服务名改为了slapd,使用service slapd start即可启动 ...

  5. WebService -- Java 实现之 CXF ( 使用CXF工具生成client 程序)

    1. 下载CXF 工具解压到磁盘 2.添加工具bin目录到PATH环境变量 3.创建一个CXF client新项目 4. run -> cmd 到指定目录,并运行工具目录下的批处理 “wadl2 ...

  6. WIN7下VS2008生成Detours3.0

    Detours是微软开发的一个函数库,可用于捕获系统API.在用其进行程序开发之前,得做一些准备工作: 一.下载Detours       在http://research.microsoft.com ...

  7. Pycharm用Ctrl+鼠标滚轮调节代码字体大小

     File --> Setting --> Editor --> General --> 勾选Change font size (zoom) with Ctrl+Mouse W ...

  8. Xcode 中的相对路径与绝对路径的相关设置

    近日闲来无事,与博客园中闲荡,忽至一烟霞照耀祥瑞蒸熏松竹翠秀奇花遍开的神奇之地.如此美景,令人心生向往,故而徜徉于其中不可自拔,独乐乐不如众乐乐: iOS开发之 相对路径与绝对路径 https://d ...

  9. NYOJ题目27水池数目

    --------------------------------------------- 这道题有点坑,也怪我总是有点马虎,按照正常人的思维0是表示有水池啊竟然是1表示有水池,最坑的是写反了竟然还能 ...

  10. windows下编译及使用libevent

    Libevent官网:http://libevent.org/ windows 7下编译: 编译环境: windows 7 + VS2010 (1)解压libevent到F:\libevent\lib ...