ios开发中使用RAC代替block传值

RAC可以实现KVO、代理、通知、block的功能,可谓集多功能于一身。本篇文章介绍RAC是如何代替block传值的。

我们使用RACSubject这个来进行信号的发送和信号的订阅,RACSubject这个类是继承自RACSignal的。
看代码
发送信号:

    - (RACSubject *)subject {
if (!_subject) {
    _subject = [RACSubject subject];
}
return _subject;
  }

  // 发送信号
 UIColor * randomColor= [UIColor colorWithRed:((float)arc4random_uniform(256) / 255.0) green:((float)arc4random_uniform(256) / 255.0) blue:((float)arc4random_uniform(256) / 255.0) alpha:1.0];
[self.subject sendNext:randomColor];

订阅信号:

    [btn.subject subscribeNext:^(id  _Nullable x) { // 订阅信号
    self.view.backgroundColor = x;
}];

使用RAC三部曲

1.创建信号
2.订阅信号
3.发送信号
代码:

  // 1.创建信号
RACSignal * signal = [RACSignal createSignal:^RACDisposable * _Nullable(id  _Nonnull subscriber) {
    // 3.发送信号
    [subscriber sendNext:@"发送信号"];
    return nil;
}];

// 2.订阅信号
[signal subscribeNext:^(id  _Nullable x) {
    NSLog(@"接收内容:%@", x);
} error:^(NSError * _Nullable error) {
    
}];

打印结果:

  2019-11-27 11:23:45.678430+0800 RAC[16608:1337875] 接收内容:发送信号

你可能感兴趣的:(ios开发中使用RAC代替block传值)