一直搞不清楚replayLazily和replay的区别可以直接跳到最后看. 原文:http://spin.atomicobject.com/2014/06/29/replay-replaylast-replaylazily/ 如果没有对RACReplaySubject和RACMulticastConnection深入研究的话,你将会很难理解它们在头文件中的描述.现在我们不去了解底层原理,用通俗的语言和图表去描述解析这几个方法. Subscribing to a Signal 对于一个“普通”的…
A co-worker recently asked me about the difference between -replay, -replayLast, and -replayLazily in the ReactiveCocoa library. I had a vague understanding of the three but was not able to confidently explain the difference, so I thought I would loo…
前言 学习MVVM和ReactiveCocoa(简称RAC)也有一段时间了,不过都仅限于看博客,一直对这两个东西很感兴趣,觉得很创新,也一直想找个机会在项目中实践一下,但是还是有一些顾虑,毕竟没有实践过,网上的资料看的也有点云里雾里,实际上手可能还是有一定的难度.于是决定写一个简单的demo实践一下.我特意选择了一个刚刚写的项目中的一个界面来实现,为的是能从实际项目需求出发,看看换成MVVM+RAC该如何实现.(关于MVVM和ReactiveCocoa的基础介绍我这里就不在说了,网上有相关资料可…
ReactiveCocoa 是一个 iOS 中的函数式响应式编程框架,它受 Functional Reactive Programming 的启发,是 Justin Spahr-Summers 和 Josh Abernathy 在开发 GitHub for Mac 过程中的一个副产品,它提供了一系列用来组合和转换值流的 API . Mattt Thompson 大神是这样评价 ReactiveCocoa 的: Breaking from a tradition of covering Apple…
背景 ReactiveCocoa(简称RAC)是最初由GitHub团队开发的一套基于Cocoa的FRP框架.FRP即Functional Reactive Programming(函数式响应式编程),其优点是用随时间改变的函数表示用户输入,这样就不需要可变状态了.我们之前的文章“RACSignal的Subscription深入分析”里曾经详细讲解过RAC核心概念之一RACSignal的实现原理.在美团客户端中,我们大量使用了这个框架.冷信号与热信号的概念很容易混淆并造成一定的问题.鉴于这个问题具…
ReactiveCocoa是一个FRP的思想在Objective-C中的实现框架,目前在美团的项目中被广泛使用.对于ReactiveCocoa的基本用法,网上有很多相关的资料,本文不再讨论.RACSignal是ReactiveCocoa中一个非常重要的概念,而本文主要关注RACSignal的实现原理.在阅读之前,你需要基本掌握RACSignal的基本用法 本文主要包含2个部分,前半部分主要分析RACSignal的subscription过程,后半部分是对前半部分的深入,在subscription…
ReactiveCocoa 是一个 iOS 中的函数式响应式编程框架,它受 Functional Reactive Programming 的启发,是 Justin Spahr-Summers 和 Josh Abernathy 在开发 GitHub for Mac 过程中的一个副产品,它提供了一系列用来组合和转换值流的 API . Mattt Thompson 大神是这样评价 ReactiveCocoa 的: Breaking from a tradition of covering Apple…
在学习ReactiveCocoa之前,先学习一下概念 ReactiveCocoa 是一套开源的基于Cocoa的FRP框架 .FRP的全称是Functional Reactive Programming,中文译作函数式响应式编程,是RP(Reactive Programm,响应式编程)的FP(Functional Programming,函数式编程)实现.说起来很拗口.太多的细节不多讨论,我们先关注下FRP的FP特征. 函数式编程 函数式编程,简单来说,就是多使用匿名函数,将逻辑处理过程,以一系列…
本文记录一些关于学习ReactiveCocoa基础知识内容,对于ReactiveCocoa相关的概念如果不了解可以网上搜索:RACSignal有很多方法可以来订阅不同的事件类型,ReactiveCocoa框架使用category来为很多基本UIKit控件添加signal.本文有收集一些网上其它文章的实例跟内容: 一:先创建页面布局(准备阶段) @interface ViewController () @property(strong,nonatomic)UITextField *nameText…
上一篇介绍了ReactiveCocoa的常用类,已经基本满足项目中的简单应用要求,但是针对复杂的功能还需要其它的类来协同处理.ReactiveCocoa提供了强大的流程处理功能来解决复杂的问题,包括事件点击.代理.通知.事件同步和异步等等,可以简化代码体量,实现 高聚合.低耦合 的编程思想.下面ReactiveCocoa的更强大的功能: 一. RACTuple.RACSequence RACTuple: 元组类,类似NSArray,在解构对象中经常使用 RACSequence: 集合类,使用它来…
(整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 在这篇博客中,我将把ReactiveCocoa中的擦作符做具体的介绍,附上对应的应用场景,是持续更新的.如果有的场景不合适,或者有更好的使用场景,可以留言,我会改进的. 拼接 - (RACSignal *)concat:(RACSignal *)signal; 拼接两个信号,合成的信号,在self发送sendCompleted后,发送新signal的…
(整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 上一章节简要的说明了如何实现的热信号.但是像那么写,貌似不是非常优雅.这一章节我们会把冷热信号转换写的跟ReactiveCocoa一样优雅. ReactiveCocoa内部是如何实现冷热信号转换的呢?我们来看个例子 RACSignal *replayLazilySignal = [[RACSignal createSignal:^RACDisposa…
前言 由于时间的问题,暂且只更新这么多了,后续还会持续更新本文<最快让你上手ReactiveCocoa之进阶篇>,目前只是简短的介绍了些RAC核心的一些方法,后续还需要加上MVVM+ReactiveCocoa实战开发.如果喜欢我的文章,可以关注我,微博:袁峥Seemygo,欢迎交流.也可以来小码哥,了解下我们的iOS培训课程.之后还会更新 1.ReactiveCocoa常见操作方法介绍. 1.1 ReactiveCocoa操作须知 所有的信号(RACSignal)都可以进行操作处理,因为所有操…
最近一直断断续续学习关于ReactiveCocoa的知识内容,对于它的一些基础内容将通过本文进行一个总结,主要是一些入门知识 一:RACSignal一些运用 @interface RACSignalTestViewController () @property(nonatomic,strong)RACSignal *mySignal,*secondSingl; @end -(RACSignal *)mySignal { if (!_mySignal) { _mySignal=[RACSignal…
引用网络上一些实例的代码,针对ReactiveCocoa的运用可以更加有帮助: 1:跟AF结合时的写法,返回RACSignal - (RACSignal *)fetchQuestionWithTag:(NSString *)tag { NSString *relativeURL = [NSString stringWithFormat:@"http://api.stackexchange.com/2.1/questions/?site=stackoverflow&order=desc&a…
  1.ReactiveCocoa常见操作方法介绍. 1.1 ReactiveCocoa操作须知 所有的信号(RACSignal)都可以进行操作处理,因为所有操作方法都定义在RACStream.h中,因此只要继承RACStream就有了操作处理方法. 1.2 ReactiveCocoa操作思想 运用的是Hook(钩子)思想,Hook是一种用于改变API(应用程序编程接口:方法)执行结果的技术. Hook用处:截获API调用的技术. Hook原理:在每次调用一个API返回结果之前,先执行你自己的方…
转载: iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好 内容来自stack overflow的一个回答:ReactiveCocoa vs RxSwift – pros and cons? 要直接比较这两个有点难.Rx 是 Reactive Extensions 的一部分,其他语言像C#, Java 和 JS 也有.Reactive Cocoa 受 Functional Reactive Programming(FRP) 启发,但是在最近一段时间里,他们提到也受到Rea…
  我个人非常推崇ReactiveCocoa,它就像中国的太极,太极生两仪,两仪生四象,四象生八卦,八卦生万物.ReactiveCocoa是一个高度抽象的编程框架,它真的很抽象,初看你不知道它是要干嘛的,等你用上了之后,就发现,有了它你是想干嘛就干嘛,编码从未如此流畅. 在此我不会讲ReactiveCocoa的原理,因为不能讲明白的才叫抽象.我也不会提及相关概念.我只是让你看看我用着它是有多爽. 代码的四十八手 察值 你别动,你一动我就知道.           Objective-C   1…
原创:转载请注明出处 ReactiveCocoa / RxSwift Native app有很大一部分的时间是在等待事件发生,然后响应事件,比如 1.等待网络请求完成, 2.等待用户的操作, 3.等待某些状态值的改变等等, 等这些事件发生后,再做进一步处理 但是这些等待和响应,并没有一个统一的处理方式.Delegate, Notification, Block, KVO, 常常会不知道该用哪个最合适.有时需要chain或者compose某几个事件,就需要多个状态变量,而状态变量一多,复杂度也就上…
转载自:http://limboy.me/ios/2013/12/27/reactivecocoa-2.html   ReactiveCocoa是Github开源的一款cocoa FRP 框架,我在之前的文章里有过介绍(当时还是1.x版本,2.x版本有了新的变化,API也有部分不兼容) 这里再简单地提一下.   Native app有很大一部分的时间是在等待事件发生,然后响应事件,比如等待网络请求完成,等待用户的操作,等待某些状态值的改变等等,等这些事件发生后,再做进一步处理. 但是这些等待和响…
ReactiveCocoa(简称RAC,以下都用RAC)是github团队开源的一套基于Cocoa并且具有FRP(Functional Reactive Programming-响应式编程)特性的框架.RAC本身就是一个第三方类库,使用它可以大大提高开发效率,简化代码,目前在各个公司也在大范围使用.RAC比较复杂,在正式介绍之前,先看一下它的类图,以便大致了解层次结构. RAC主要包含了四个组件 信号源方面:RACStream及其子类 订阅者方面:RACSubscriber及其子类 调度器方面:…
1.ReactiveCocoa常见操作方法介绍. 1.1 ReactiveCocoa操作须知 所有的信号(RACSignal)都可以进行操作处理,因为所有操作方法都定义在RACStream.h中,而RACSignal继承RACStream. 1.2 ReactiveCocoa操作思想 运用的是Hook(钩子)思想,Hook是一种用于改变API(应用程序编程接口:方法)执行结果的技术. Hook用处:截获API调用的技术. Hook原理:在每次调用一个API返回结果之前,先执行你自己的方法,改变结…
作者:空之境界(博客) 前戏我个人非常推崇ReactiveCocoa,它就像中国的太极,太极生两仪,两仪生四象,四象生八卦,八卦生万物.ReactiveCocoa是一个高度抽象的编程框架,它真的很抽象,初看你不知道它是要干嘛的,等你用上了之后,就发现,有了它你是想干嘛就干嘛,编码从未如此流畅. 在此我不会讲ReactiveCocoa的原理,因为不能讲明白的才叫抽象.我也不会提及相关概念.我只是让你看看我用着它是有多爽. 代码的四十八手 察值 你别动,你一动我就知道. 1 2 3 4 5 @wea…
这一次我们将要讨论的是移动开发中比较重要的一环--网络请求的封装.鉴于个人经验有限,本文将在一定程度上参考 基于AFNetworking2.0和ReactiveCocoa2.1的iOS REST Client,来以LeanCloud的Rest Api来练手.前两节的示例,我们都是使用自定义的PHP接口来作为测试服务器,但是真实的服务器接口是涉及到许多细节的,比如一个基本的权限控制机制,用户登录登出等.为了能更真实快速的开始网络请求类的重构,本节选取一个国内较为常用的后端开发平台LeanCloud…
概要 在此工程中,本文将讨论将MVC改造为MVVM需要的一些基本方法,同时会适当穿插部分关于MVVM概念性的讨论!本文最大的意义在于,提供了一种读者可以复现的方式,逐步引出从MVC向MVVM尽可能平滑过渡的一种方案;此外,也是为数不多的ReactiveCocoa实例文章之一.本文是MVVM系列文文章的第二篇,在阅读之前,您可能需要先阅读下第一篇文章: 写给iOS小白的MVVM教程(一): 从MVC到MVVM之一个典型的MVC应用场景 Apple本身的UIKit框架是为MVC模式设计的,所以你在无…
RAC操作方法三. demo地址:https://github.com/SummerHH/ReactiveCocoa.git doNext deliverOn timeout interval delay retry replay throttle //ReactiveCocoa操作方法之秩序. - (void)doNext { //doNext: 执行Next之前,会先执行这个Block //doCompleted: 执行sendCompleted之前,会先执行这个Block [[[[RACS…
前戏我个人非常推崇ReactiveCocoa,它就像中国的太极,太极生两仪,两仪生四象,四象生八卦,八卦生万物.ReactiveCocoa是一个高度抽象的编程框架,它真的很抽象,初看你不知道它是要干嘛的,等你用上了之后,就发现,有了它你是想干嘛就干嘛,编码从未如此流畅. 在此我不会讲ReactiveCocoa的原理,因为不能讲明白的才叫抽象.我也不会提及相关概念.我只是让你看看我用着它是有多爽. 代码的四十八手 察值 你别动,你一动我就知道. 1 2 3 4 5 @weakify(self);…
ReactiveCocoa简单使用20例 1. 观察值变化 你别动,你一动我就知道. //当self.value的值变化时调用Block,这是用KVO的机制,RAC封装了KVO @weakify(self); [RACObserve(self, value) subscribeNext:^(NSString* x) { @strongify(self); NSLog(@"你动了"); }]; 2. 单边响应 你唱歌,我就跳舞. //创建一个信号 RACSignal *signalA =…
热信号:事件触发: 冷信号:订阅出发: 从本质上来说,是信号的存在和产生,是静态信号和动态信号的区别. 背景 ReactiveCocoa(简称RAC)是最初由GitHub团队开发的一套基于Cocoa的FRP框架.FRP即Functional Reactive Programming(函数式响应式编程),其优点是用随时间改变的函数表示用户输入,这样就不需要可变状态了.我们之前的文章“RACSignal的Subscription深入分析”里曾经详细讲解过RAC核心概念之一RACSignal的实现原理…
最近看了大神的博客后,感觉该对ReactiveCocoa做一个了断了. 首先大致的对以下关于ReactiveCocoa内容做一个简单的总结,其他的后续更新 1.ReactiveCocoa的操作思想 2.ReactiveCocoa的底层实现 3.ReactiveCocoa的信号映射的使用和底层实现 4.ReactiveCocoa的组合信号的使用和底层实现 5.ReactiveCocoa的过滤信号的使用和底层实现 6.ReactiveCocoa的秩序信号的使用和底层实现 7.ReactiveCoco…