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为了实现优雅的信号绑定,可谓使尽浑身解数,不仅 ...
随机推荐
- iOS编程修改系统音量
iOS的AVFoundation框架提供了基本的音视频播放工具,我们基本上可以靠其中提供的类完成绝大部分的音视频播放任务.但是在音频播放的输出音量的处理上,苹果的策略比较保守.尽管AVPlayer和A ...
- 转:微博"收藏/赞/转发"技术资料汇总
书籍 HTTP权威指南 <- @Fenng Introduction to Information Retrieval <- @陈利人 Lua 源码欣赏 <- @简悦云风 The A ...
- ListView OnScrollListener详解(滑屏分页显示数据)
package com.action; import java.util.ArrayList; import java.util.List; import android.app.Activity; ...
- 完美解决VMware Workstation : Could not open /dev/vmmon: No such file or directory
root@tiger:/usr/bin# cd /etc/init.d root@tiger:/usr/bin# sudo mv /usr/lib/vmware/modules/binary /usr ...
- COJN 0487 800301红与黑
800301红与黑 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖. ...
- -_-#【Backbone】View
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Sql语句中IN等方面的用法
select * from txt1 select * from txt2 select * from txt1 where name in (select name from txt2 where ...
- 《Ruby语言入门教程v1.0》学习笔记-01
<Ruby语言入门教程v1.0> 编著:张开川 邮箱:kaichuan_zhang@126.com 想要学习ruby是因为公司的自动化测试使用到了ruby语言,但是公司关于ruby只给了一 ...
- Bitwise AND of Numbers Range——LeetCode
Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers ...
- 【转】Contrary to the answers here, you DON'T need to worry about encoding!
For those goals, I honestly do not understand why people keep telling you that you need the encoding ...