信号基本流程:

  

    //1:创建信号
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) { //subscriber 对象不是一个对象
//3:发送信号
[subscriber sendNext:@"Cooci"]; //请求网络 失败 error
NSError *error = [NSError errorWithDomain:NSURLErrorDomain code: userInfo:@{@"key":@"10086错误"}]; [subscriber sendError:error];
// [subscriber sendCompleted]; //4.RACDisposable 销毁 return [RACDisposable disposableWithBlock:^{ NSLog(@"销毁了");
}];
}]; //2:订阅信号
[signal subscribeNext:^(id _Nullable x) { NSLog(@"%@",x);
}]; //订阅错误信号 [signal subscribeError:^(NSError * _Nullable error) { NSLog(@"%@",error);
}];

一: KVO

    [RACObserve(self, name) subscribeNext:^(id  _Nullable x) {

        NSLog(@"%@",x);

    }];

二: 通知

    [[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillShowNotification object:nil] subscribeNext:^(NSNotification * _Nullable x) {

        NSLog(@"%@",x);
}];

三: 代理

    [[self rac_signalForSelector:@selector(textFieldDidEndEditing:) fromProtocol:@protocol(UITextFieldDelegate)] subscribeNext:^(RACTuple * _Nullable x) {

    }];

四: target

    //Button
[[self.button rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) { }]; //UITextField
[[self.textField rac_textSignal] subscribeNext:^(NSString * _Nullable x) {
//x 为textField 中输入的text
}]; //UITapGestureRecognizer
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
self.label.userInteractionEnabled = YES;
[self.label addGestureRecognizer:tap]; [[tap rac_gestureSignal] subscribeNext:^(__kindof UIGestureRecognizer * _Nullable x) { }];

五: timer

    [[RACSignal interval: onScheduler:[RACScheduler scheduler]] subscribeNext:^(NSDate * _Nullable x) {

        NSLog(@"%@",[NSThread currentThread]);

    }];

六: 结构

    //数组
NSArray *array = @[@"Kobe",@"laker",@""]; [array.rac_sequence.signal subscribeNext:^(id _Nullable x) {
//子线程
NSLog(@"%@",[NSThread currentThread]);
NSLog(@"数组%@",x);
}]; /**
2018-11-21 18:53:24.318270+0800 001---RAC初探[12854:18767540] <NSThread: 0x600002909200>{number = 3, name = (null)}
2018-11-21 18:53:24.318529+0800 001---RAC初探[12854:18767540] 数组Kobe
2018-11-21 18:53:24.319043+0800 001---RAC初探[12854:18767540] <NSThread: 0x600002909200>{number = 3, name = (null)}
2018-11-21 18:53:24.319139+0800 001---RAC初探[12854:18767540] 数组laker
2018-11-21 18:53:24.319340+0800 001---RAC初探[12854:18767540] <NSThread: 0x600002909200>{number = 3, name = (null)}
2018-11-21 18:53:24.319398+0800 <NSThread: 0x600002909240>{number = 4, name = (null)}
2018-11-21 18:53:24.319444+0800 001---RAC初探[12854:18767540] 数组34 */ NSDictionary *dict = @{@"name":@"James",@"age":@"",@"gender":@""}; [dict.rac_sequence.signal subscribeNext:^(id _Nullable x) { NSLog(@"%@",[NSThread currentThread]); //元祖
NSLog(@"字典%@",x); RACTwoTuple *tuple = (RACTwoTuple *)x; NSLog(@"key == %@ , value = %@",tuple[],tuple[]); }]; /**
2018-11-21 18:53:24.319584+0800 字典<RACTwoTuple: 0x600003e7f0a0> (
name,
James
)
2018-11-21 18:53:24.319666+0800 key == name , value = James
2018-11-21 18:53:24.319899+0800 <NSThread: 0x600002909240>{number = 4, name = (null)}
2018-11-21 18:53:24.320207+0800 字典<RACTwoTuple: 0x600003e7f070> (
age,
18
)
2018-11-21 18:53:24.320494+0800 key == age , value = 18
2018-11-21 18:53:24.342978+0800 <NSThread: 0x600002909240>{number = 4, name = (null)}
2018-11-21 18:53:24.343114+0800 字典<RACTwoTuple: 0x600003e68950> (
gender,
1
)
2018-11-21 18:53:24.343201+0800 key == gender , value = 1 */

RAC初步使用的更多相关文章

  1. 11gR2 RAC启用iptables导致节点宕机问题处理

    通常,在安装数据库时,绝大多数都是要求把selinux及iptables关闭,然后再进行安装的.但是在运营商的系统中,很多安全的因素,需要将现网的数据库主机上的iptables开启的. 在开启ipta ...

  2. RAC下一个Fatal NI connect error 12170.错误处理

    原创作品,离 "深蓝blog" 博客,欢迎转载,请务必注明转载的来源.否则有权追究版权责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/a ...

  3. 分析RAC下一个SPFILE整合的三篇文章的文件更改

    大约RAC下一个spfile分析_整理在_2014.4.17 说明:文章来源于网络 第一篇:RAC下SPFILE文件改动 在RAC下spfile位置的改动与单节点环境不全然一致,有些地方须要特别注意, ...

  4. RAC某节点v$asm_disk查询hang分析处理

    主题:RAC某节点v$asm_disk查询hang分析处理 环境:Oracle 11.2.0.3 RAC 故障描述:RAC环境2个节点,节点1查询v$asm_disk正常返回结果,节点2查询v$asm ...

  5. JDBC连接oracle RAC数据库配置

    RAC的配置如下: node1:ip地址192.168.60.132,实例名:rac1,主机名:rac1 node2:ip地址192.168.60.144,实例名:rac2,主机名:rac2 RAC服 ...

  6. 在oracle RAC 环境下用 PL/SQL Developer debug procedure 出现 hang 的情况

    现象描述: 用plsql developer 连接编译procedure 的时候都很正常.一旦开始Test进入Debug模式的时候就Hang住了. 初步猜测是没有权限,可是是DBA角色呀,如果没有权限 ...

  7. RAC环境下oracle实例启动问题:ora-01565,ora-17503

         今天有现场因为突然听电,数据库服务器停了,需要我远程重启一下.   现场是RAC环境,oracle10.2.0.4.   登录后,startup,报错如下   根据报错,初步判断是共享数据文 ...

  8. 移动端之Android开发的几种方式的初步体验

    目前越来越多的移动端混合开发方式,下面列举的大多数我都略微的尝试过,就初步的认识写个简单的心得: 开发方式 开发环境 是否需要AndroidSDK 支持跨平台 开发语言&技能 MUI Win+ ...

  9. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

随机推荐

  1. jquery 获取子元素的限制jquery

    今天练习jqueryAPI发现一个问题就是子元素如果采用nth-child,元素不同就获取不到,因此一个父元素下的子元素标签必须相同,如果不同第一个元素可以用这个方法实现,但是如果第二元素及以后如果出 ...

  2. echarts 树图

    1 事件:事件绑定,事件命名统一挂载到require('echarts/config').EVENT(非模块化为echarts.config.EVENT)命名空间下,建议使用此命名空间作为事件名引用, ...

  3. php 5.3.10 cli 模式加载php_openssl.dll

    问题描述: 开启php_openssl.dll,仍提示php_openssl.dll required/Not found 原因:可能是php的版本跟php_openssl.dll的版本不一样 具体排 ...

  4. ezmorph将一种对象转换成另外一种对象

    EZMorph支持原始数据类型(Primitive),对象(Object),多维数组转换与DynaBeans的转换.兼容JDK1.3.1,整个类库大小只有76K左右. 在Java EE开发常用的str ...

  5. Python __init__ 特殊方法

    在Python中有很多以双下划线开头且以双下划线结尾的固定方法.他们会在特定的时机被触发执行. __init__ 就是其中之一,它会在实例化之后自动被调用.以完成实例的初始化. >>> ...

  6. 用BlazeMeter录制JMeter(三十五)测试脚本(转载)

    转载自 http://www.cnblogs.com/yangxia-test 工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤 ...

  7. android显示和隐藏软键盘(转)

    显示键盘: EditText editText.setFocusable(true); editText.setFocusableInTouchMode(true); editText.request ...

  8. Mysql 5.7 弱密码限制,及创建用户无密码用户

    一.介绍 1.haproxy Mysql 需要一个无密码登录的mysql用户. 2.Mysql 5.7 版本默认安装了 validate_password 插件,作用:要求密码的复杂度. 3.创建用户 ...

  9. 截图原理(一)——Android自动化测试学习历程

    把两节的内容汇总起来,第一节讲的是如何在apk中直接进行截屏,用到了Robotium的Solo类的takeScreenShot方法,有一个小的demo,以及从方法一直往里钻,知道它具体是怎么进行截屏的 ...

  10. 7.27-8.10 Problems

    这是之前记录在word里的问题,现在誊到博客里.温故知新.时常回顾问题. 7.27 Bootstrap validator remote 验证出错 用Bootstrap validator插件验证表单 ...