ReactiveCocoa学习笔记--用法
1、监测UI变量的变化
return 后把值传递下去。
1.1、输出
[self.usernameTextField.rac_textSignal subscribeNext:^(id x){
NSLog(@"%@", x);
}];
1.2、过滤->输出
[[self.usernameTextField.rac_textSignal
filter:^BOOL(NSString*text){
return text.length > 3;
}]
subscribeNext:^(id x){
NSLog(@"%@", x);
}];
1.3、改变数据类型->过滤->输出
[[[self.usernameTextField.rac_textSignal
map:^id(NSString*text){
return @(text.length);
}]
filter:^BOOL(NSNumber*length){
return[length integerValue] > 3;
}]
subscribeNext:^(id x){
NSLog(@"%@", x);
}];
1.4、subscribeNext的另一种写法
RAC宏允许直接把信号的输出应用到对象的属性上。RAC宏有两个参数,第一个是需要设置属性值的对象,第二个是属性名。每次信号产生一个next事件,传递过来的值都会应用到该属性上
RAC(self.passwordTextField, backgroundColor) =
[validPasswordSignal
map:^id(NSNumber *passwordValid){
return[passwordValid boolValue] ? [UIColor clearColor]:[UIColor yellowColor];
}];
2.常用用法
RAC(self.outputLabel, text) = RACObserve(self.model, name);
3.特殊技巧
3.1切换到主线程
deliverOn:[RACScheduler mainThreadScheduler]]
3.2 重置cell内容
takeUntil:cell.rac_prepareForReuseSignal
3.3 一段时间内没有新信号再往下执行
throttle:0.5
3.4状态改变时发出信号
distinctUntilChanged
3.4空信号
- (RACSignal *)executeSearchSignal
{
return [[[[RACSignal empty] logAll] delay:2.0] logAll];
}
空信号会立即完成。delay操作会将其所接收到的next或complete事件延迟两秒执行。
3.4反转信号
not操作来反转信号
例如:[signal.executing not];
3.4 executionSignals属性(是一个信号)
发送由命令每次执行时生成的信号,创建和发出一个新的命令执行信号执行。
ReactiveCocoa学习笔记--用法的更多相关文章
- iOS开发ReactiveCocoa学习笔记(一)
学习 RAC 我们首先要了解 RAC 都有哪些类 RACSignal RACSubject RACSequence RACMulticastConnection RACCommand 在学习的时候写了 ...
- iOS开发ReactiveCocoa学习笔记(六)
RAC操作方法三. demo地址:https://github.com/SummerHH/ReactiveCocoa.git doNext deliverOn timeout interval del ...
- iOS开发ReactiveCocoa学习笔记(四)
ReactiveCocoa常见操作方法介绍: demo地址:https://github.com/SummerHH/ReactiveCocoa.git 1.1 ReactiveCocoa操作须知 所有 ...
- iOS开发ReactiveCocoa学习笔记(五)
ReactiveCocoa常见操作方法介绍: demo地址:https://github.com/SummerHH/ReactiveCocoa.git filter ignore ignoreValu ...
- iOS开发ReactiveCocoa学习笔记(三)
RAC常用用法: 1.监听按钮的点击事件: UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame ...
- iOS开发ReactiveCocoa学习笔记(二)
RAC 中常见的宏: 使用宏定义要单独导入 #import <RACEXTScope.h> 一. RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用于给某个对象的某 ...
- ReactiveCocoa学习资料
ReactiveCocoa 学习资料: ReactiveCocoa入门教程:第一部分 http://www.cocoachina.com/ios/20150123/10994.html Reactiv ...
- ReactiveCocoa 学习资料
之前就有听说,感觉很强大,ReactiveCocoa更加被Mattt Thompson大神称为开启一个新Objective-C纪元.所以觉得非常有学习的必要了. 一些很好的学习资料: Reactive ...
- Dynamic CRM 2013学习笔记(二)插件基本用法及调试
插件是可与 Microsoft Dynamics CRM 2013 和 Microsoft Dynamics CRM Online 集成的自定义业务逻辑(代码),用于修改或增加平台的标准行为.也可 ...
随机推荐
- chrome下如何显示打开网页的IP地址
Website IP:装上之后在网页右下角能够显示当前访问网页的IP地址,这个对定位哪台前端机是有问题的,特别有帮助.
- centos和ubuntu下使用cron设置定时任务
1.启动cron工具[ps:使用root权限] centos启动cron两种方式 a) /etc/init.d/crond start b) service crond start ubuntu启动c ...
- Nginx将通过IP访问重定向
server { listen 80 default_server; server_name localhost; location / { rewrite ^ http://www.xxx.com/ ...
- zf-关于通知公告如果发布的是无限制时间的,那么默认隐藏时间输入框的问题
function initElements(network){ var nonoticeLimit = document.getElementById("nonoticeLimit" ...
- new关键字的理解-问题型
//输出的结果是?????????//The answer is good and gbc public class Example { String str=new String("goo ...
- POJ 1062 昂贵的聘礼详解最短路变形
POJ上难得一见的中文题…… 思路:建立一个以0为源点的地图,那么Map[0][n]的值代表 第n号物品的价值,Map[i][j]代表用 j 替代 i 后,物品j的价值.我们认为酋长的承诺为节点 ‘ ...
- CentOS 6.3下NTP服务安装和配置
测试环境: NTPserver 192.168.1.252 NTPclient 192.168.1.251 准备工作: 关闭selinux: vi /etc/selinux/config SELINU ...
- Qt5:Qt程序不在任务拦显示图标
setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint); 回头再写
- [iOS]Objective-C 第一节课
Objective-C 第一节课 本节课的主要内容 创建Objective-C的第一个工程 HelloWorld Objective-C中的字符串 创建Objective-C的第一个工程 打开Xcod ...
- css---使用class和id
网页现在的新标准是W3C.目前的模式是html+css+javascript,如何理解呢,就是html是网页的结构,CSS是网页的样式,javascript是行为.结构就是盖房子先要把结构建出来,然后 ...