1.RACSubject:RACSubject:信号提供者,自己可以充当信号,又能发送信号。
2.使用场景:通常用来代替代理,有了它,就不必要定义代理了。
需求:
1.给当前控制器添加一个按钮,push到另一个控制器界面
2.另一个控制器view中有个按钮,点击按钮,返回控制器的第一个页面和接收到第二个界面的消息
第一个界面:
TwoViewController
copy
@H_462_404@
*总结:
我们完全可以用RACSubject代替代理/通知,确实方便许多
这里我们点击TwoViewController的pop的时候将字符串"ws"传给了ViewController的button的title。
步骤:
// 1.创建信号
RACSubject *subject = [RACSubject subject];
// 2.订阅信号
[subject subscribeNext:^(id x) {
// block:当有数据发出的时候就会调用
// block:处理数据
NSLog(@"%@",x);
}];
// 3.发送信号
[subject sendNext:value];
**注意:~~**
RACSubject和RACReplaySubject的区别
RACSubject必须要先订阅信号之后才能发送信号,而RACReplaySubject可以先发送信号后订阅.
RACSubject代码中体现为:先走TwoViewController的sendNext,后走ViewController的subscribeNext订阅
RACReplaySubject代码中体现为:先走ViewController的subscribeNext订阅,后走TwoViewController的sendNext
可按实际情况各取所需。
原文链接:https://www.f2er.com/react/305650.html