OC + RAC(一) RACSignal 基本使用】的更多相关文章

-(void)_test1{ //测试RAC流程 发送next类型事件 以completed结束时: //至于有无 sendCompleted 的区别主要是用在需要知道信号状态 NSLog(@"1 信号未被创建"); RACSignal *sourceSignal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) { NSLog(@"…
-(void)_test8{ /// RACSubject继承自RACSignal 但是RACSubject和RACSignal的区别? //1能接收1,2 //但是2只能接收2 RACSubject *subject = [RACSubject subject]; [subject subscribeNext:^(id x) { NSLog(@"订阅者1%@", x); }]; [subject sendNext:@"subject1"]; [subject su…
-(void)_test4{ ///RAC combineLatest和merge // combineLatest只有当两个信号都发送了 订阅者才能收到信息 结果一次收到 结果是数组 // merge只要有一个发送了就能收到 结果一条一条收到 // RACSubject *baseSubjectTwo = [RACSubject subject]; // RACSubject *baseSignal = [RACSubject subject]; // [[RACSignal combineL…
. RAC(TARGET, [KEYPATH, [NIL_VALUE]]) :用于给某个对象的某个属性绑定. // 只要文本框文字改变,就会修改label的文字 RAC(self.labelView,text) = _textField.rac_textSignal; . RACObserve(self, name) :监听某个对象的某个属性,返回的是信号. [RACObserve(self.view, center) subscribeNext:^(id x) { NSLog(@”%@”,x)…
// 跳跃 : 如下,skip传入2 跳过前面两个值 // 实际用处: 在实际开发中比如 后台返回的数据前面几个没用,我们想跳跃过去,便可以用skip - (void)skip { RACSubject *subject = [RACSubject subject]; [[subject skip:] subscribeNext:^(id x) { NSLog(@"%@", x); }]; [subject sendNext:@]; [subject sendNext:@]; [sub…
-(void)_test9{ /// RACCommand又叫命令 是用来收发数据的 监听按钮点击,网络请求.... RACCommand * command = [[RACCommand alloc] initWithSignalBlock:^RACSignal * _Nonnull(id _Nullable input) { NSLog(@"input = %@",input); return [RACSignal createSignal:^RACDisposable * _Nu…
-(void)_test6{ RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { [subscriber sendNext:@"first value"]; [subscriber sendNext:@"second value"]; [subscriber sendNext:@"third value"…
-(void)_test5{ //弊端:有几个订阅者就会请求几次数据 // 1.创建信号 RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { NSLog(@"发送热门模块的请求"); // 3.发送数据 [subscriber sendNext:@]; return nil; }]; // 2.订阅信号 [signal subscribeNe…
-(void)_test2{ ///////////////////////////////////////Command 命令的用法 注意使用command.executionSignals去订阅时 一定要先订阅再excute RACCommand * command = [[RACCommand alloc] initWithSignalBlock:^RACSignal * _Nonnull(id _Nullable input) { NSLog(@"input = %@",inp…
-(void)_test3{ RACSubject *signalofsignal = [RACSubject subject]; //信号中的信号(也就是发送的数据是信号) RACSubject *signal1 = [RACSubject subject]; RACSubject *signal2 = [RACSubject subject]; RACSubject *signal3 = [RACSubject subject]; RACSubject *signal4 = [RACSubj…
时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, 并通过回调(callback)的形式, 实时更新UI. 其实就是把action, 观察者模式(kvo)加上block, 代理等封装起来统一了接口.上面这句话等同于放屁,请别认真,那时候太菜,根本是啥也不懂,这是一种FRP编程范式,准确说也就是通过block(OC),闭包(Swift)实现了一个Mao…
什么是 ReactiveCocoa ReactiveCocoa(其简称为 RAC)是由 Github 开源的一个应用于 iOS 和 OS X 开发的新框架.RAC 具有函数式编程和响应式编程的特性.它主要吸取了 .Net 的 Reactive Extensions 的设计和实现. ReactiveCocoa 试图解决什么问题 经过一段时间的研究,我认为 ReactiveCocoa 试图解决以下 3 个问题: 传统 iOS 开发过程中,状态以及状态之间依赖过多的问题 传统 MVC 架构的问题:Co…
本文记录一些关于学习ReactiveCocoa基础知识内容,对于ReactiveCocoa相关的概念如果不了解可以网上搜索:RACSignal有很多方法可以来订阅不同的事件类型,ReactiveCocoa框架使用category来为很多基本UIKit控件添加signal.本文有收集一些网上其它文章的实例跟内容: 一:先创建页面布局(准备阶段) @interface ViewController () @property(strong,nonatomic)UITextField *nameText…
简介 ReactiveCocoa(简称为RAC),RAC具有函数响应式编程特性,由Matt Diephouse开源的一个应用于iOS和OS X的新框架. 为什么使用RAC? 因为RAC具有高聚合低耦合的思想所以使用RAC会让代码更简洁,逻辑更清晰. 如何在项目中添加RAC? 使用Cocoapods导入RAC   pod 'ReactiveObjC' 工作原理   工作原理 常见类解释 1. Stream - 信号流值 - RACStream类 表示一个基本单元可以为任意值,其值会随着事件的变化而…
前段时间在design+code购买了一个学习iOS设计和编码在线课程,使用Sketch设计App,然后使用Swift语言实现Designer News客户端.作者Meng To已经开源到Github:MengTo/DesignerNewsApp · GitHub.虽然实现整个Designer News客户端基本功能,但是采用臃肿MVC(Model-View-Controller)架构,不易于代码的测试和复用,于是使用ReactiveCocoa实现MVVM(Model-View-View Mod…
本文出处:http://www.cnblogs.com/forkasi/p/4886740.html 在项目里,经常会使用这种方式创建一个signal 然后next RACSignal *four = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { NSLog(@"oneSignal createSignal"); [subscriber sendNext:@"&qu…
本文转载至 http://www.infoq.com/cn/articles/reactivecocoa-ios-new-develop-framework ReactiveCocoa(其简称为RAC)是由Github 开源的一个应用于iOS和OS X开发的新框架.RAC具有函数式编程和响应式编程的特性.它主要吸取了.Net的 Reactive Extensions的设计和实现.本文将详细介绍该框架试图解决什么问题,以及其用法与特点. ReactiveCocoa试图解决什么问题 经过一段时间的研…
在OC中block的基本使用 // // ViewController.h // RAC--test // // Created by Aaron on 17/1/17. // Copyright © 2017年 Aaron. All rights reserved. // #import <UIKit/UIKit.h> //对于block的全局声明. typedef void(^myBlock)(NSString *str); @interface ViewController : UIVi…
RAC学习笔记 ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾. 在学习ReactiveCocoa之前,先学习一下概念 ReactiveCocoa 是一套开源的基于Cocoa的FRP框架 .FRP的全称是Functional Reactive Programming,中文译作函数式响应式编程,是RP(Reactive Programm,响应式编程)的FP(Functiona…
时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, 并通过回调(callback)的形式, 实时更新UI, 其实就是把action, 观察者模式(kvo)加上block, 代理等封装起来统一了接口. 这篇文章就不太针对RAC事件流的初学者了, 我的博客一般都是针对OC转Swift的开发者, 所以这里就简单的写几句先, 以后我再补全加上demo. 在O…
前言 很多blog都说ReactiveCocoa好用,然后各种秀自己如何灵活运用ReactiveCocoa,但是感觉真正缺少的是一篇如何学习ReactiveCocoa的文章,小编看了很多篇都没看出怎么使用ReactiveCocoa,于是决定自己写一遍关于学习ReactiveCocoa的文章,本文主要针对如何从零开始学习ReactiveCocoa. 1.ReactiveCocoa简介 ReactiveCocoa(简称为`RAC`),是由Github开源的一个应用于iOS和OS开发的新框架,Coco…
RAC(ReactiveCocoa)使用方法(一) RAC(ReactiveCocoa)使用方法(二) 什么是RAC? 最近回顾了一下ReactiveCocoa的方法,也看了一些人的文章,现写篇文章总结一下. 现在这个库最新支持Swift,如果你要是用Cocoapods的话不指定版本它默认是下载Swift版本,如果依旧想用OC版本就指定一个版本,最好是V2.5版本及以下,否则可能会出现错误.最近我试的是V2.5,可以正常使用. 项目中用Cocoapods使用:pod "ReactiveCocoa…
前言 ReactiveCocoa是一个(第一个?)将函数响应式编程范例带入Objective-C的开源库.ReactiveCocoa是由Josh Abernathy和Justin Spahr-Summers 两位大神在对GitHub for Mac的开发过程中编写的.Justin Spahr-Summers 大神在2011年11月13号下午12点35分进行的第一次提交,直到2013年2月13日上午3点05分发布了其1.0 release,达到了第一个重要里程碑.ReactiveCocoa社区也非…
https://juejin.im/post/5829f4c3570c350063c436ac 前言 ReactiveCocoa是一个(第一个?)将函数响应式编程范例带入Objective-C的开源库.ReactiveCocoa是由Josh Abernathy和Justin Spahr-Summers 两位大神在对GitHub for Mac的开发过程中编写的.Justin Spahr-Summers 大神在2011年11月13号下午12点35分进行的第一次提交,直到2013年2月13日上午3点…
RAC 指的就是 RactiveCocoa ,是 Github 的一个开源框架,能够帮我们提供大量方便的事件处理方案,让我们更简单粗暴地去处理事件,现在分为 ReactiveObjC 和 ReactiveSwift ,两个框架的功能使用相似,由于正好在学习这个然后公司项目是用 OC 写的,所以将 ReactiveObjC 的使用方法记录一下. ReactiveObjC 的使用 RAC 的核心思想:创建信号 - 订阅信号 - 发送信号 ,并且在 RAC 中我们会看到大量的 block ,所以在使用…
导入ReactiveCocoa框架 在终端,进入Reactive Cocoa文件下 创建podfile 打开该文件 并配置 use_frameworks! pod 'ReactiveCocoa', '~>4.0.2-alpha-1' 安装pod install --no-repo-update 遇到头文件导入不进去,可以将头文件放到全局的.h文件中     ReactiveCocoa常见的类 RACSignal:信号类;RACSubscriber是协议 简介 有数据产生时就会使用RACSigna…
上一节是自己对网络层的一些重构,本节是自己一些代码小实践做出的一些demo程序,基本涵盖大多数UI控件操作. 一.用UISlider实现调色板 假设我们现在做一个demo,上面有一个View用来展示颜色,下面有三个UISlider滑竿分别控制RGB的色值,随着不同滑竿的拖动上面view的颜色会随之改变. 可以先脑补一下不用RAC该怎么写. 如果使用RAC只需要将三个信号包装起来用适当的操作就能实现. // 拖线的UI控件 @property (weak, nonatomic) IBOutlet…
今天在写关于textView的数据绑定时原先写法是这样的: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #78492a } span.s1 { color: #000000 } span.s2 { } span.s3 { color: #ba2da2 } span.s4 { color: #4f8187 } span.s5 { color: #703daa } 1. RACChannelTo(self,te…
前言 RAC相比以往的开发模式主要有以下优点:提供了统一的消息传递机制:提供了多种奇妙且高效的信号操作方法:配合MVVM设计模式和RAC宏绑定减少多端依赖. RAC的理论知识非常深厚,包含有FRP,高阶函数,冷信号与热信号,RAC Operation,信号的生命周期等,这些文档里都有介绍. 但是由于RAC本身的特性,可能会听上去容易上手难. 本文还是从一个比较接地气的角度开始的.因为现在要做一个完美100%的全项目ReactiveCocoa架构基本不太现实,大多数项目都会有很多历史包袱,我们只能…
什么是RAC? 几乎每一篇介绍RAC的文章开头都是这么一个问题.我这篇文章是写给新手(包括我自己)看的,所以这个问题更是无法忽视. 简单的说,RAC就是一个第三方库,他可以大大简化你的代码过程. 官方的说,ReactiveCocoa(其简称为RAC)是由GitHub开源的一个应用于iOS和OS X开发的新框架.RAC具有函数式编程和响应式编程的特性. 为什么我们要学习RAC? 为了提高我们的开发效率.RAC在某些特定情况下开发时可以大大简化代码,并且目前来看安全可靠. 配置RAC环境 我习惯用c…