美文网首页ReactiveCocoaiOS Developer程序员
利用RACBehaviorSubject实现pub/sub机制,

利用RACBehaviorSubject实现pub/sub机制,

作者: 小白lf | 来源:发表于2017-04-26 17:09 被阅读2853次

    请读者在熟悉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

    相关文章

      网友评论

      • 阳仔dynamics:楼主能给出RACEventHandler的一个使用示例吗?
        小白lf:@阳仔dynamics 是的 :smiley: 这个就是RAC 的一次简单应用,但是却很有用,在我的项目里把NSNotification基本上全部替换掉了
        阳仔dynamics:@小白lf 就是相当于在NSNotification基础功能上加了addObserver的时候能获取到最近一次的值的功能,是嘛?
        小白lf:@阳仔dynamics
        _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;
        }];
        }
      • 李W:楼主真是匠心独运,高手中的高手。能留个联系方式交流下么?
      • WRFranky:等待更多精品
      • jayne_duan:不错 mark
      • pentsunwang:楼主真是匠心独运,高手中的高手。能留个联系方式交流下么?
      • 0e787ade9058:楼主666,收获挺大的:+1:
      • 1f44eb533d09:楼主,有没有相关的视频或者课程,求教
      • 71965f3cce86:楼主真是匠心独运,高手中的高手。能留个联系方式交流下么?

      本文标题:利用RACBehaviorSubject实现pub/sub机制,

      本文链接:https://www.haomeiwen.com/subject/lkaizttx.html