请读者在熟悉ReactiveCocoa2.5的基础上 继续阅读本文。

图片来源: www.jianshu.com/p/d7d951a99db8
实现原理
1. 利用RACBehaviorSubject每次被sub的时候都会把保存的最新值发送给订阅者。
2. RACBehaviorSubject继承于RACSubject,所以当它被sub时都会调用RACSubject 的subscribe方法,在RACSubject 的subscribe方法中,核心代码就是用一个数组把所有订阅者保存起来,在pub的时候遍历该数组,给所有的订阅者发消息。这样就实现了NSNotificationCenter的功能。
3. Talk is cheap, show me the code! (哈哈。。。)
RACBehaviorSubject源码分析

RACSubject源码分析

自定义类RACEventHandler
RACEventHandler.h

RACEventHandler.m

网友评论
_accountInfoSubscription = [[RACEventHandler subscribe:[AccountInfo class]] subscribeNext:^(AccountInfo *accountInfo) {
@strongify(self);
// TODO: 业务处理
}];
- (RACSignal *)queryMyAccount {
return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[[_userService queryMyAccount] subscribeNext:^(AccountInfo *accountInfo) {
[RACEventHandler publish:accountInfo];
[subscriber sendCompleted];
} error:^(NSError *error) {
[subscriber sendError:error];
}];
return nil;
}];
}