信号基本流程:

  

  1. //1:创建信号
  2. RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
  3.  
  4. //subscriber 对象不是一个对象
  5. //3:发送信号
  6. [subscriber sendNext:@"Cooci"];
  7.  
  8. //请求网络 失败 error
  9. NSError *error = [NSError errorWithDomain:NSURLErrorDomain code: userInfo:@{@"key":@"10086错误"}];
  10.  
  11. [subscriber sendError:error];
  12. // [subscriber sendCompleted];
  13.  
  14. //4.RACDisposable 销毁
  15.  
  16. return [RACDisposable disposableWithBlock:^{
  17.  
  18. NSLog(@"销毁了");
  19. }];
  20. }];
  21.  
  22. //2:订阅信号
  23. [signal subscribeNext:^(id _Nullable x) {
  24.  
  25. NSLog(@"%@",x);
  26. }];
  27.  
  28. //订阅错误信号
  29.  
  30. [signal subscribeError:^(NSError * _Nullable error) {
  31.  
  32. NSLog(@"%@",error);
  33. }];

一: KVO

  1. [RACObserve(self, name) subscribeNext:^(id _Nullable x) {
  2.  
  3. NSLog(@"%@",x);
  4.  
  5. }];

二: 通知

  1. [[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillShowNotification object:nil] subscribeNext:^(NSNotification * _Nullable x) {
  2.  
  3. NSLog(@"%@",x);
  4. }];

三: 代理

  1. [[self rac_signalForSelector:@selector(textFieldDidEndEditing:) fromProtocol:@protocol(UITextFieldDelegate)] subscribeNext:^(RACTuple * _Nullable x) {
  2.  
  3. }];

四: target

  1. //Button
  2. [[self.button rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) {
  3.  
  4. }];
  5.  
  6. //UITextField
  7. [[self.textField rac_textSignal] subscribeNext:^(NSString * _Nullable x) {
  8. //x 为textField 中输入的text
  9. }];
  10.  
  11. //UITapGestureRecognizer
  12. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
  13. self.label.userInteractionEnabled = YES;
  14. [self.label addGestureRecognizer:tap];
  15.  
  16. [[tap rac_gestureSignal] subscribeNext:^(__kindof UIGestureRecognizer * _Nullable x) {
  17.  
  18. }];

五: timer

  1. [[RACSignal interval: onScheduler:[RACScheduler scheduler]] subscribeNext:^(NSDate * _Nullable x) {
  2.  
  3. NSLog(@"%@",[NSThread currentThread]);
  4.  
  5. }];

六: 结构

  1. //数组
  2. NSArray *array = @[@"Kobe",@"laker",@""];
  3.  
  4. [array.rac_sequence.signal subscribeNext:^(id _Nullable x) {
  5. //子线程
  6. NSLog(@"%@",[NSThread currentThread]);
  7. NSLog(@"数组%@",x);
  8. }];
  9.  
  10. /**
  11. 2018-11-21 18:53:24.318270+0800 001---RAC初探[12854:18767540] <NSThread: 0x600002909200>{number = 3, name = (null)}
  12. 2018-11-21 18:53:24.318529+0800 001---RAC初探[12854:18767540] 数组Kobe
  13. 2018-11-21 18:53:24.319043+0800 001---RAC初探[12854:18767540] <NSThread: 0x600002909200>{number = 3, name = (null)}
  14. 2018-11-21 18:53:24.319139+0800 001---RAC初探[12854:18767540] 数组laker
  15. 2018-11-21 18:53:24.319340+0800 001---RAC初探[12854:18767540] <NSThread: 0x600002909200>{number = 3, name = (null)}
  16. 2018-11-21 18:53:24.319398+0800 <NSThread: 0x600002909240>{number = 4, name = (null)}
  17. 2018-11-21 18:53:24.319444+0800 001---RAC初探[12854:18767540] 数组34
  18.  
  19. */
  20.  
  21. NSDictionary *dict = @{@"name":@"James",@"age":@"",@"gender":@""};
  22.  
  23. [dict.rac_sequence.signal subscribeNext:^(id _Nullable x) {
  24.  
  25. NSLog(@"%@",[NSThread currentThread]);
  26.  
  27. //元祖
  28. NSLog(@"字典%@",x);
  29.  
  30. RACTwoTuple *tuple = (RACTwoTuple *)x;
  31.  
  32. NSLog(@"key == %@ , value = %@",tuple[],tuple[]);
  33.  
  34. }];
  35.  
  36. /**
  37. 2018-11-21 18:53:24.319584+0800 字典<RACTwoTuple: 0x600003e7f0a0> (
  38. name,
  39. James
  40. )
  41. 2018-11-21 18:53:24.319666+0800 key == name , value = James
  42. 2018-11-21 18:53:24.319899+0800 <NSThread: 0x600002909240>{number = 4, name = (null)}
  43. 2018-11-21 18:53:24.320207+0800 字典<RACTwoTuple: 0x600003e7f070> (
  44. age,
  45. 18
  46. )
  47. 2018-11-21 18:53:24.320494+0800 key == age , value = 18
  48. 2018-11-21 18:53:24.342978+0800 <NSThread: 0x600002909240>{number = 4, name = (null)}
  49. 2018-11-21 18:53:24.343114+0800 字典<RACTwoTuple: 0x600003e68950> (
  50. gender,
  51. 1
  52. )
  53. 2018-11-21 18:53:24.343201+0800 key == gender , value = 1
  54.  
  55. */

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. Vue 中select option默认选中的处理方法

    在做泰康项目的时候有个需求就是要给select默认选中的样式我的处理方法有两个 1.直接将默认值给  selectedOption <select v-model="selectedO ...

  2. 运用active和hover实现导航栏的页面切换

    .nav ul li a:hover{ background: #3E6EDD;}.nav ul li a:hover img{ display: block;}.nav ul li a.active ...

  3. java fastJson

    // 大区的数据 String cityList = "[{'title':'华北','value':'1','children':[{'title':'山东','value':'1.1', ...

  4. linux中awk命令学习

    awk是一个强大的文本分析工具,awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. 通常获取某一行时,我们会使用 “grep 关键字“进行查找,但在读取某一列时, ...

  5. sql数据库之多库查询

    连接到数据库服务器gwsps07上,打开查询分析器,如何获取gwrenshi数据库中的数据? 查询语句如下: select * from GWRENSHI.CGC.dbo.PERempms(serve ...

  6. Local Storage

    HTML代码: <ul id="edit" contenteditable="true"> <li>修改我吧,然后刷新页面看看,^_^& ...

  7. defer和async的详细区别

    看过javascript高级程序设计的人,在javascript高级程序设计里,应该看到了介绍了有关defer和async的区别,可是比较浅显,而且也说得不是很清楚.下面我们来通过图片来详细了解下df ...

  8. 可视化工具Navicat的使用

    可视化工具Navicat的使用 掌握Navicat的基本使用 # PS:在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图 ...

  9. 恶性肿瘤预测Python程序(逻辑回归)

    from sklearn.linear_model import LinearRegression,SGDRegressor,Ridge,LogisticRegression from sklearn ...

  10. DES算法实现(C++版)

    #include "memory.h" #include "stdio.h" enum {encrypt,decrypt};//ENCRYPT:加密,DECRY ...