RAC初识

作者: Anna哟 | 来源:发表于2018-05-16 09:46 被阅读0次

RAC:

    ReactiveCocoa 主要是由以下四大核心组件:

    RACStream :信号源

    RACSubscriber:订阅者

    RACScheduler:调度器

    RACDisposable:清洁工

ReactiveCocoa使用信号来代表异步事件,提供了统一的方式来处理所有异步的行为,包括代理,block,target-action,通知,kvo等等;

代理

target-action

通知 

KVO

登录效果小测试

除了RAC团队定义好的信号量供我们使用,我们还可以自己创建一个signal来执行一些自己的操作

RACSignal类中有一个创建信号量的方法 createSignal然后在Block块中实现一些操作

🌰:

RACSignal  * jsonSignal  =    [RACSignal createSignal:^RACDisposable * _Nullable(id  _Nonnull subscriber) {

        NSURLSessionConfiguration * c = [NSURLSessionConfiguration defaultSessionConfiguration];

        NSURLSession * session = [NSURLSession sessionWithConfiguration:c];

        NSURLSessionDataTask * data = [session dataTaskWithURL:[NSURL URLWithString:urlStr]completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

            if (error) {

                [subscriber sendError:error];

            }else{

                NSError * e;

                NSDictionary *jsonDic= [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&e];

                if (e) {

                    [subscriber sendError:e];

                }

                else{

                    [subscriber sendNext:jsonDic];

                    [subscriber sendCompleted];

                }

            }

        }];

        [data resume];//执行这个task

        return [RACDisposable disposableWithBlock:^{

        }];

    }];

通过订阅 获得这个信号量中的数据

[ jsonSignal  subscribeNext:^(id  _Nullable x) {

        NSLog(@"%@",x);

    }error:^(NSError * _Nullable error) {

        NSLog(@"%@",error);

    }];

但是此时有个小问题需要注意一下[每订阅一次 或者在不同的地方订阅这个信号量 这个signal中的任务执行一次  所以多次订阅 多次执行  这种在有些时候不是我们想要的

假如:如果这个信号量中的任务是对一个局部变量__block  int  x = 0 ;  做 x+=5  ;

第一次订阅 a=5;

第二次订阅 a=10;

]

如果不想要自己创建的signal中的任务重复执行 那么可以使用 replayLast把这个signal变成记录型的signal

[[RACSignal createSignal:^RACDisposable * _Nullable(id  _Nonnull subscriber) {

      }]  replayLast];

相关文章

  • RAC初识

    RAC: ReactiveCocoa 主要是由以下四大核心组件: RACStream :信号源 RAC...

  • 初识RAC

    RAC - ReactiveCocoa, 是github上的一套开源框架, 是一套函数响应式编程框架. 那么这套框...

  • RAC初识

    简介 简单的说,RAC就是一个第三方库,他可以大大简化你的代码过程。 官方的说,ReactiveCocoa(其简称...

  • 初识 RAC

    一.RAC 是什么?能做什么? 1.RAC是Reactive Cocoa的简称,是一种支持函数式响应式编程的框架,...

  • ReactiveCocoa--初识RAC

    RAC是什么?RAC — ReactiveCocoa(RAC) Github 一个开源框架!!RAC — 函数响...

  • ReactiveCocoa 相关理论和实践

    RAC 初识https://gold.xitu.io/post/5829f4c3570c350063c436ach...

  • 初识RACSignal、RACDisposable及RACSig

    RAC是什么? RAC — ReactiveCocoa(RAC) Github 一个开源框架!! RAC — 函数...

  • 学习RAC小记-适合给新手看的RAC用法总结

    RAC是什么? RAC — ReactiveCocoa(RAC) Github 一个开源框架!! RAC — 函数...

  • RAC-ReactiveCocoa总结(一)

    RAC是什么? RAC — ReactiveCocoa(RAC) Github 一个开源框架!! RAC具有函数...

  • Oracle RAC与DG

    RAC RAC: real application clustersrac RAC: real applicati...

网友评论

      本文标题:RAC初识

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