ReactiveCocoa 简单使用
#pragma mark 指令 -(void) instructionDemo
{
// 创建使能信号
RACSignal * signal = [self.textField.rac_textSignal map:^id(id value) { return @([value rangeOfString:@"@"].location != NSNotFound);
}]; // 任何时候button被点击就会执行signalBlock,rac_command属性会监控使能信号signal和button的enabled属性
self.button.rac_command = [[RACCommand alloc]initWithEnabled:signal
signalBlock:^RACSignal *(id input) {
NSLog(@"button was pressed"); return [RACSignal empty];
}];
// [RACSignal empty]
// RACCommand的executionSignal管道(pipe)下发出去。这个信号代表button按下时一些任务需要被处理。在这个处理信号没有返回一个'complete value'('empty '会立即返回一个'complete value')之前button将会保持不可用状态.因为这个例子中我们只是打印了一下,所以这里我们只返回一个empty信号 } #pragma mark 状态推导
-(void) inferStatueDemo;
{ [self.textField.rac_textSignal subscribeNext:^(id x){
NSLog(@"New Value: %@",x);
}]; RACSignal * signal = [self.textField.rac_textSignal map:^id(id value) { return @([value rangeOfString:@"@"].location != NSNotFound);
}]; RAC(self.button, enabled) = signal; RAC(self.textField, textColor) = [signal map:^id(id value) { if ([value boolValue]) {
return [UIColor greenColor];
}
return [UIColor redColor];
}];
} #pragma mark rac_sequeuece 简单使用
-(void) rac_sequeueceUseDemo
{
// 使用rac_sequeuece我们能够轻松地将数组转化为一个流
NSArray *array = @[ @1, @2, @3 ];
RACSequence * stream = [array rac_sequence]; // map是一种映射关系 将stream映射成了新的流
[stream map:^id (id value){
return @(pow([value integerValue], 2));
}]; // 跟数组一样,流不能包含nil元素
NSLog(@"%@",[stream array]); NSLog(@"%@",[[[array rac_sequence] map:^id(id value) {
return @(pow([value integerValue], 2));
}]array]); // 如何让一个序列流合并为单个值 NSLog(@"%@", [[[array rac_sequence] map:^id(id value) {
return [value stringValue];
}] foldLeftWithStart:@"" reduce:^id(id accumulator, id value) {
return [accumulator stringByAppendingString:value];
}]); }
ReactiveCocoa 简单使用的更多相关文章
- ReactiveCocoa简单使用20例
ReactiveCocoa简单使用20例 1. 观察值变化 你别动,你一动我就知道. //当self.value的值变化时调用Block,这是用KVO的机制,RAC封装了KVO @weakify(se ...
- iOS ReactiveCocoa简单使用笔记
涉及对象: 两个输入框,一个按钮. 代码功能: 随时监测输入框内容的长度变化,并在输入内容不符合预设要求时,立即改变输入框背景色. 在两个输入框的内容都符合预设要求时,按钮才可用. RACSignal ...
- iOS学习笔记39-ReactiveCocoa入门
FRP,全称为Functional Reactive Programming,是一种响应变化的编程范式,最近几年比较火,大概的理解就像这样: 当a的值或者b的值发生变化时,c的值会自动响应a的值或b的 ...
- [ReactiveCocoa]最简单的RAC入门操作
当knowckout.js出来的时候,确实被其kobinding惊艳了一下,等到AngularJS出来的时候,把MVVM的模式更是向前推进了一步.所以当ReactiveCocoa出来的时候,也很感兴趣 ...
- MVVM With ReactiveCocoa让移动开发更简单
作者:@雷纯锋2011 MVVM是一种软件架构模式,它是 Martin Fowler 的 Presentation Model 的一种变体,最先由微软的架构师 John Gossman 在 2005 ...
- iOS开发之ReactiveCocoa下的MVVM(干货分享)
最近工作比较忙,但还是出来更新博客了,今天给大家分享一些ReactiveCocoa以及MVVM的一些东西,干活还是比较足的.在之前发表过一篇博文,名字叫做<iOS开发之浅谈MVVM的架构设计与团 ...
- 为什么ReactiveCocoa中推荐使用RACSignal来做信号处理而不是RACSubject
原文解释在这里http://cocoadocs.org/docsets/ReactiveCocoa/0.6.0/ 在标题Creating hot subscribables 底下 先贴原文: The ...
- 最快让你上手ReactiveCocoa之基础篇
前言 很多blog都说ReactiveCocoa好用,然后各种秀自己如何灵活运用ReactiveCocoa,但是感觉真正缺少的是一篇如何学习ReactiveCocoa的文章,这里介绍一下. 1.Rea ...
- ReactiveCocoa源码拆分解析(六)
(整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) RAC为了实现优雅的信号绑定,可谓使尽浑身解数,不仅 ...
随机推荐
- (C初学) 对数组与指针的一些浅显的理解
因为课堂上没听懂,又看不懂教科书(<C语言程序设计教程>第3版 谭浩强,张基温编著)上晦涩的表达方式,昨天晚上特意拿<C语言入门经典>这本书自己研究了一晚的数组与指针. 先来一 ...
- 『在线工具』 基于 xsser.me 源码 + BootStrap 前端 的 XSS 平台
乌云社区上一个小伙伴的对xsser.me 的源码做了 BS 的优化,本人已经搭建好,提供给大家免费使用,大牛求绕过,多谢. 地址: http://xss.evilclay.com (目前开放注册,不需 ...
- 基于Karma和Jasmine的AngularJS测试
1:工程目录结构 y@y:karma-t01$ tree -L 3.├── client│ ├── app│ │ └── user│ ├── bower_components│ │ ...
- Children of the Candy Corn (bfs+dfs)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8120 Accepted: 3547 Description The c ...
- 第一个Windows程序
今天,我们的任务就是和大家一起开发第一个Windows程序,这个程序的功能非常简单,就是弹出一个对话框,但是简单的程序可以帮助大家建立信心. 例1 第一个Windows程序 /* ********** ...
- collapse
1. border-collapse 该CSS属性用来设定表格的行和列的边框是合并成单边框,还是分别有各自的边框 separate 缺省值.边框分开,不合并. collapse 边框合并.即如果相邻, ...
- cppunit学习笔记
下载cppunit 链接:http://www.cnblogs.com/duxiuxing/p/4303809.html cppunit官方文档浅析 链接:http://www.cnblogs.com ...
- LinGo:投资问题——线性规划
一.根据题目所给数据,建立一张表格方便查看 项目A 项目B 项目C 项目D 可投资年 1,2,3,4 3 2 1,2,3,4,5 收回本利年 次年年末 第5年 第5年 当年年末 本利 1.06 1.1 ...
- Java WeakHashMap 源码解析
前面把基于特定数据结构的Map介绍完了,它们分别利用了相应数据结构的特点来实现特殊的目的,像HashMap利用哈希表的快速插入.查找实现O(1)的增删改查,TreeMap则利用了红黑树来保证key的有 ...
- python_Opencv_使用Matplotlib模块
使用Matplotlib模块 Matplotib 是python 的一个绘图库,里头有各种各样的绘图方法. 之后会陆续了解.先学习怎样用Matplotib 显示图像. 可以放大图像,保存图像. 安装M ...