我是靠谱客的博主 安静发卡,最近开发中收集的这篇文章主要介绍RACCommand中的信号,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

示例:

 RACSignal* textSignal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[subscriber sendNext:@(1)];
[subscriber sendNext:@(2)];
[subscriber sendError:[NSError new]];
return nil;
}];
RACCommand* textCommad = [[RACCommand alloc]initWithSignalBlock:^RACSignal *(id input) {
return textSignal;
}];
self.createButton.rac_command = textCommad;
[textCommad.executing subscribeNext:^(id x) {
NSLog(@"executing%@",x);
}];
[textCommad.executionSignals subscribeNext:^(id x) {
NSLog(@"executionSignals%@",x);
}];
[[textCommad.executionSignals switchToLatest]subscribeNext:^(id x) {
NSLog(@"executionSignals switchLatest%@",x);
}];
[textCommad.errors subscribeNext:^(id x) {
NSLog(@"errors");
}];

输出:

2015-08-09 22:17:27.610 ReactiveCocoaDemo[7181:141024] executing0

2015-08-09 22:17:30.325 ReactiveCocoaDemo[7181:141024] executing1

2015-08-09 22:17:30.325 ReactiveCocoaDemo[7181:141024] executionSignals<RACDynamicSignal: 0x7f89b3c6ca20> name: 

2015-08-09 22:17:30.326 ReactiveCocoaDemo[7181:141024] executionSignals switchLatest1

2015-08-09 22:17:30.326 ReactiveCocoaDemo[7181:141024] executionSignals switchLatest2

2015-08-09 22:17:30.327 ReactiveCocoaDemo[7181:141024] errors

2015-08-09 22:17:30.327 ReactiveCocoaDemo[7181:141024] executing0

结论:

1.executing信号一绑定就会sendNext:@(NO);如果想忽略第一次的Next,使用[executing skip:1]

2.按钮点击事件发生时,首先exectuing会sendNext:@(YES);然后executionSignals会sendNext一个RACSignal对象,该对象就是RACCommand创建时传入的block的返回值,。 改正:该RACSignal对象与RACCommand创建时传入的block的返回值不是同一个对象,但是他们两个会sendNext相同的值。

3.注意executionSignals是信号的信号,即它的值类型为RACSignal,而我们一般希望捕获的是RACSignal所携带的值,因此可以使用switchToLatest或flatten的方法来做到;也可以直接对该RACSignal进行订阅。

4.errors包含了RACComand执行过程产生的所有错误。

5.等到RACCommand中的Signal都完毕了(complete或error),exectuting会sendNext:@(NO).

转载于:https://www.cnblogs.com/guoxiaoqian/p/4716540.html

最后

以上就是安静发卡为你收集整理的RACCommand中的信号的全部内容,希望文章能够帮你解决RACCommand中的信号所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部