20180119-01-RACSignal的基础
一.获取一个信号的方式
1.单元信号
RACSignal *signal1 = [RACSignal return:@"Some Value"];
RACSignal *signal2 = [RACSignal error:[NSError errorWithDomain:NSCocoaErrorDomain code: userInfo:nil]];
RACSignal *signal3 = [RACSignal empty];
RACSignal *signal4 = [RACSignal never];
2.动态信号
RACSignal *signal5 = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
[subscriber sendNext:@];
[subscriber sendNext:@];
[subscriber sendCompleted];
return [RACDisposable disposableWithBlock:^{
NSLog(@"信号已销毁");
}];
}];
3.cocoa桥接
RACSignal *signal6 = [self.view rac_signalForSelector:@selector(setFrame:)];
RACSignal *signal7 = [self.btn rac_signalForControlEvents:UIControlEventTouchUpInside];
RACSignal *signal8 = [self.view rac_willDeallocSignal];
RACSignal *singal9 = RACObserve(self.view, backgroundColor)
4.信号变换
RACSignal *signall10 = [signal1 map:^id _Nullable(id _Nullable value) {
return [value substringFromIndex:];
}];
5.序列变换
RACSequence *sequence = @[@,@,@].rac_sequence;
RACSignal *signal11 = sequence.signal;
二.订阅一个信号的方式
1.订阅方法
[signal11 subscribeNext:^(id _Nullable x) {
NSLog(@"next value is %@",x);
} error:^(NSError * _Nullable error) {
NSLog(@"Ops Get some error:%@",error);
} completed:^{
NSLog(@"It finish success");
}];
2.绑定
RAC(self.view,backgroundColor) = signal9;
3.Cocoa桥接
[self.view rac_liftSelector:@selector(convertPoint:toView:) withSignals:signal1,signal2, nil];
[self.view rac_liftSelector:@selector(convertPoint:toView:) withSignalsFromArray:@[signal1,signal2]];
[self.view rac_liftSelector:@selector(convertPoint:toView:) withSignalOfArguments:signal5];
4.订阅过程
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
[subscriber sendNext:@];
[subscriber sendNext:@];
[subscriber sendCompleted];
return [RACDisposable disposableWithBlock:^{
NSLog(@"信号销毁");
}];
}];
RACDisposable *disposable = [signal subscribeNext:^(id _Nullable x) {
NSLog(@"next value is %@",x);
} error:^(NSError * _Nullable error) {
NSLog(@"Ops Get some error:%@",error);
} completed:^{
NSLog(@"It finish success");
}];
[disposable dispose];
三.信号的变换和组合


四.RACSignal的各类操作
单个信号的变换

20180119-01-RACSignal的基础的更多相关文章
- Linux网络服务01——Linux网络基础设置
Linux网络服务01--Linux网络基础设置 一.查看及测试网络 1.使用ifconfig命令查看网络接口 (1)查看活动的网络接口 ifconfig命令 [root@crushlinux ~]# ...
- 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB
走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...
- javaScript系列 [01]-javaScript函数基础
[01]-javaScript函数基础 1.1 函数的创建和结构 函数的定义:函数是JavaScript的基础模块单元,包含一组语句,用于代码复用.信息隐蔽和组合调用. 函数的创建:在javaScri ...
- # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结
095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)
094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)
093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)
092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)
091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 04 使用包进行类管理(2)——导入包
090 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 使用包进行类管理(1)——创建包
089 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
随机推荐
- uboot tag存储主要部分代码
https://www.cnblogs.com/pokerface/p/5217106.html cmd_bootm.c //传递给内核的参数 int do_bootm (cmd_t ...
- CSS3属性之 target伪类实现Tab切换效果
CSS3 :target伪类用来改变页面中锚链接URL所指向的ID样式 代码示例: <!DOCTYPE html> <html lang="en"> < ...
- bzoj4773 负环 倍增+矩阵
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4773 题解 最小的负环的长度,等价于最小的 \(len\) 使得存在一条从点 \(i\) 到自 ...
- thinkphp model
模型样板 <?php namespace app\model; use think\Db; use think\Model; class Admin extends Model { //表名 p ...
- maven-enforcer-plugin查看冲突
我们会经常碰到这样的问题,在pom中引入了一个jar,里面默认依赖了其他的jar包.jar包一多的时候,我们很难确认哪些jar是我们需要的,哪些jar是冲突的.此时会出现很多莫名其妙的问题,什么类找不 ...
- java实现js端的escape和unescape
1.今天遇到这么个问题,需要把一些特殊字符传递到后台进行处理,例如Aa111111!@#,结果到了后台出现了个别字符中文符号了.这个时候需要转码.常见的就是js端的escape和unescape这种函 ...
- shell学习----正则表达式
在使用sed和gawk时如果能够熟练的使用正则表达式,可以准确的过滤到自己需要的信息 Linux中,有两种流行的正则表达式引擎: POSIX基础正则表达式,BRE引擎 POSIX扩展正则表达式,ERE ...
- B/S文件断点上传
一.概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载.在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了.一般断点下载时才用到Range和Content- ...
- QGIS SDK下载
https://www.e-learn.cn/content/qita/1241748 基于OSGEO4W下载lib包. 并在VS中调用. 这样比直接编译容易一些.可以快速上手.
- SSL异常javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
jdk 7 http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html jdk 8 http: ...