一 前提:  

    在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. C#之关机事件

    一.背景 做了个APP,通过向下位机发送串口数据,然后通过串口去控制多路光源,现在的问题来了,若是电脑强行关机,而APP又没在电脑关机前做任何动作,导致电脑已经关机了,而下位机控制的灯源还在工作.所以 ...

  2. CMake命令/函数汇总(翻译自官方手册)

    查看官方文档 cmake命令 选项 CMake变量 CMake命令汇总 / add_custom_command add_custom_target/add_definitions/add_depen ...

  3. Shell脚本中,如何判断Linux系统是32位还是64位?

    一行就能搞定,输出32或者64 可以用“和. 参考代码如下: ldconfig if [ $(getconf WORD_BIT) = '32' ] && [ $(getconf LON ...

  4. 【MySQL】 empty table and delete table.

    1.MySQL生成删除满足条件的表的sql: 1 SELECT 2 CONCAT( 3 'DROP TABLE ', 4 GROUP_CONCAT(table_name), 5 ';' 6 ) AS ...

  5. 数据库Sharding的基本思想和切分策略

    一.基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题.不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时 ...

  6. 示例开发过程记录:meteor,react,apollo

    本示例记录一个开发过程: 1)参考 Meteor React TUTORIAL教程 https://www.meteor.com/tutorials/react/creating-an-app 2). ...

  7. 毛笔笔锋算法IOS版

    http://www.merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/#.VUln2_mqp ...

  8. With great power comes great responsibility

    We trust you have received the usual lecture from the local SystemAdministrator. It usually boils do ...

  9. LVS集群之NAT模式实现

    LVS集群之NAT模式实现 一.集群的种类 集群系统主要分为 1.HA:高可用集群,又叫双机热备.   (a)原理      2台机器A,B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至 ...

  10. myEclipse svn插件安装

    方法一(liuyou在安装时报空指针异常) 1.打开HELP->MyEclipse Configuration Center,切换到SoftWare标签页. 2.点击Add Site 打开对话框 ...