RACStream是RACSignal和RACSequence的父类,定义了一些流的操作方法。从名字上可以看出来,这个对象就像流一样可以往任何一个出口流,同时也可以给这个流设计一道道关卡,改变流(这里的改变,既包括流的内容,也包括融合,也包括流的筛选等等)。
 
1. RACStream简介
 
(a)RACStream类中提供两个类方法,+empty 和 +return,第一个是创建一个空的流对象;第二个是创建一个基于方法参数值的一个流。
 
(b)RACStream类中提供了几个最基本的改变流的方法,-bind,-concat和-zipWith(之后会在RACSignal中对这些进行详细讲解)。第一个方法,是只改变当前流对象的方法;第二个方法是在当前响应流已经完成后,紧接着注入新的响应流;第三个方法,是将不同的流进行打包合成一个流。
 
(c)在实现了最基本的改变流的方法之后,基于这些改变方法而形成很多更好更方便的改变方法也就出来了,这些方法也都是在RACStream(Operation)这个扩展中。
 
2. RACStream(Operation)介绍
 
(a)flattenMap:在bind基础上封装的改变方法,用自己提供的block,改变当前流,变成block返回的流对象。
 
(b)flatten:在flattenMap基础封装的改变方法,如果当前反应流中的对象也是一个流的话,就可以将当前流变成当前流中的流对象
 
(c)map:在flattenMap基础上封装的改变方法,在flattenMap中的block中返回的值必须也是流对象,而map则不需要,它是将流中的对象执行block后,用流的return方法将值变成流对象。
 
(d)mapReplace:在map的基础上封装的改变方法,直接替换当前流中的对象,形成一个新的对象流。
 
(e)filter:在Map基础上封装的改变封装,过滤掉当前流中不符合要求的对象,将之变为空流
 
(f)ignore:在filter基础封装的改变方法,忽略和当前值一样的对象,将之变为空流
 
(g)skip:在bind基础上封装的改变方法,忽略当前流前n次的对象值,将之变为空流
 
(h)take:在bind基础上封装的改变方法,只区当前流中的前n次对象值,之后将流变为空(不是空流)。
 
(i)distinctUntilChanged:在bind基础封装的改变方法,当流中后一次的值和前一次的值不同的时候,才会返回当前值的流,否则返回空流(第一次默认被忽略)
 
(j)takeUntilBlock:在bind基础封装的改变方法,取当前流的对象值,直到当前值满足提供的block,就会将当前流变为空(不是空流)
 
(k)takeWhileBlock:在bind基础封装的改变方法,取当前流的对象值,直到当前值不满足提供的block,就会将当前流变为空(不是空流)
 
(l)skipUntilBlock:在bind基础封装的改变方法,忽略当前流的对象值(变为空流),直到当前值满足提供的block。
 
(m)skipWhileBlock:在bind基础封装的改变方法,忽略当前流的对象值(变为空流),直到当前值不满足提供的block
 
(n)scanWithStart:reduceWithIndex:在bind基础封装的改变方法,用同样的block执行每次流中的值,并将结果用于后一次执行当中,每次都把block执行后的值变成新的流中的对象。
 
(o)startWIth:在contact基础上封装的多流之间的顺序方法,在当前流的值流出之前,加入一个初始值
 
(p)zip:打包多流,将多个流中的值包装成一个RACTuple对象
 
(q)reduceEach:将流中的RACTuple对象进行过滤,返回特定的衍生出的一个值对象
 
3. RACStream子类策略
 
RACStream是RACSignal和RACSequence的父类,但是,RACSignal和RACSequence都自己实现了一套bind,zipWith和contât方法,所以在不同的子类中,RACStream中定义的各种操作对应到各种子类,就会有不同的涵义。 
 
http://blog.csdn.net/chenyin10011991/article/details/51971388

iOS-RAC学习笔记(一)——RACStream的更多相关文章

  1. RAC学习笔记

    RAC学习笔记 ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾. 在学习Re ...

  2. Oracle RAC学习笔记:基本概念及入门

    Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章]    oracle 10g real applica ...

  3. Oracle RAC学习笔记01-集群理论

    Oracle RAC学习笔记01-集群理论 1.集群相关理论概述 2.Oracle Clusterware 3.Oracle RAC 原理 写在前面: 最近一直在看张晓明的大话Oracle RAC,真 ...

  4. Oracle RAC学习笔记02-RAC维护工具集

    Oracle RAC学习笔记02-RAC维护工具集 RAC维护工具集 1.节点层 2.网络层 3.集群层 4.应用层 本文实验环境: 10.2.0.5 Clusterware + RAC 11.2.0 ...

  5. iOS音频学习笔记二:iOS SDK中与音频有关的相关框架

      上层:       Media Player Framework: 包含MPMoviePlayerController.MPMoviePlayerViewController.MPMusicPla ...

  6. iOS音频学习笔记一:常见音频封装格式及编码格式

    (1) pcm格式    pcm是经过话筒录音后直接得到的未经压缩的数据流    数据大小=采样频率*采样位数*声道*秒数/8     采样频率一般是22k或者44k,位数一般是8位或者16位,声道一 ...

  7. iOS开发学习笔记:基础篇

    iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境 ...

  8. iOS开发学习笔记

    1 常用的第三方工具 1.1 iPhone Simulator 测试程序需要模拟器iPhone Simulator 1.2 设计界面需要Interface Builder,Interface Buil ...

  9. iOS - CAEmitterLayer 学习笔记一

    其他参考博客: http://my.oschina.net/u/2340880/blog/485095 http://www.cnblogs.com/YouXianMing/p/3785876.htm ...

随机推荐

  1. Testbench的编写

    Testbench的作用,在于给我们编写的可综合代码的模块送入激励.即在我们波形仿真中用编写testbench来代替拖拽波形.其中还包括了我们硬件仿真与matlab仿真的联调建立(将matlab产生的 ...

  2. python 提取主域名和子域名代码——先根据规则提取,如果有问题,则使用tldextract

    import tldextract def extract_domain(domain): suffix = {'.com','.la','.io', '.co', '.cn','.info', '. ...

  3. 三个获取浏览器URL中参数值的方法

    这三个是一般的获取浏览器传的参数值的方法,之前有用unescape()解码的方法,但是遇到汉字会产生乱码,所以用decodeURI(); 方法一: function getQueryString(na ...

  4. kettle工具的设计模块

    大家都知道,每个ETL工具都用不同的名字来区分不同的组成部分.kettle也不例外. 比如,在 Kettle的四大不同环境工具 本博客,是立足于kettle工具的设计模块的概念介绍. 1.转换 转换( ...

  5. spark集群体系结构

  6. mybatis的sql中字段两种映射(映射到实体)方式

    mybatis的xml配置文件中,字段映射的两种方式: 1.resultMap标签中将数据库的字段与实体类中的字段对应: <resultMap id="BaseResultMap&qu ...

  7. 解决Mysql报错:PHP Warning: mysql_connect(): mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication.

    最近我更新了appserv-win32-2.5.10的 PHP 5.2版本到PHP 5.3,在调用http://localhost/phpMyAdmin/时,出现如下错误:PHP Warning:   ...

  8. 51nod 1268 和为K的组合 dfs

    题目: 1268 和为K的组合 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个正整数组成的数组A,求能否从中选出若干个,使他们的和为K.如果可以,输出:& ...

  9. 数据库应用_innobackupex备份与恢复

    1.Percona软件介绍; 2.innobackupex的备份与恢复 一, Percona软件 在学习percona软件之前,我们看一下物理备份和mysqldump备份有哪些缺陷. 物理备份的缺点: ...

  10. Spring MVC 搭建过程中web.xml配置引入文件的路径问题

    为啥要说一下这么low的问题,因为我是一个比较low的人,哈哈.本来我技术有限,没事干自己撘个环境找找乐趣,结果被各种基础问题,弄的一脸蒙蔽.算了不多说,直接说问题. 1.首先说一下java编译后的文 ...