1-4编程思想-RACReplaySubject使用

RACReplaySubject原理

RACReplaySubject流程框架

RACReplaySubject流程图.jpeg
  //1.创建信号
    RACReplaySubject *subject = [RACReplaySubject subject];

解释1:创建subject信号的时候,同事创建了_subscribers和_valuesReceived两个数组

   //2.订阅信号
    [subject subscribeNext:^(id  _Nullable x) {
        NSLog(@"%@",x);
        
    }];

解释2:订阅信号的时候,当valuesReceived有值的时候,会直接发送消息(易错点),valuesReceived没有值就直接订阅信号

   //3.发送信号
    [subject sendNext:@1];
发送消息流程图.png

解释3:发送信号的时候,先执行enumerateSubscribersUsingBlock将block传进去,然后保存数据:subscribers = [self.subscribers copy];最后执行block(subscriber);发送信号[subscriber sendNext:value];

注意:首先使用cocopoods导入ReactiveObjC’,'~>3.0.0版本第三方

Podfile文件导入命令

platform :ios, ‘9.0‘
use_frameworks! 
target ‘RACReplaySubject’ do
pod 'ReactiveObjC’,'~>3.0.0'
end

之后使用终端cd 到目标工程目录,然后 使用pod install 命令导入第三方库

代码

#import "ViewController.h"
#import 
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    //1.创建信号
    RACReplaySubject *subject = [RACReplaySubject subject];
    
    //2.订阅信号
    [subject subscribeNext:^(id  _Nullable x) {
        NSLog(@"%@",x);
        
    }];
    
    //3.发送信号
    [subject sendNext:@1];
    
}

你可能感兴趣的:(1-4编程思想-RACReplaySubject使用)