RAC <二>信号三部曲

隐身守侯 提交于 2020-07-27 12:23:56

iOS的事件被包装成信号后,它会有三种形态出现:Next 下一步怎么做? Completed 完成后怎么做? error 发生错误后怎么做?

Block 是属于事件机制吗? 
不是,Block是一段预先准备好的代码,什么时候被执行?我不知道! 和代理不一样,代理是约定好协议,调用方实现协议的方法,接收方在需要的时候,通知代理执行协议方法。

从上一篇导入后,初次尝试下:

//创建信号
//createSignal 点进去,看 源码 实际上是在里面会有创建信号 RACDynamicSignal 然后保存block DidSubscribe
RACSignal * signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
    //subscriber 是一个block.如果订阅者信号代码块注视的话,那么这句话也不会执行。
    NSLog(@"Here I am!");

// subscriber 订阅者,是一个block. //发送信号 [subscriber sendNext:@"This is RAC"];

    return nil;
}];
//订阅信号. 创建订阅者,然后保存 block (next block ) 然后执行 didSubcribe
[signal subscribeNext:^(id  _Nullable x) {
    // x 是信号的内容
    NSLog(@"x的内容是:%@",x);
}];

//信号三部曲的步骤:创建信号,订阅信号,发送信号。

//完整的流程: 源码里先创建了一个 RACDynamicSignal , 然后它保存了一个block 叫 DidSubScribe,创建完毕。
//然后订阅信号,创建订阅者,然后保存 block (next block ) 然后执行 didSubcribe

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!