美文网首页iOS小知识点
RAC-ReactiveCocoa总结(一)

RAC-ReactiveCocoa总结(一)

作者: _onePiece | 来源:发表于2018-08-04 14:36 被阅读26次
timg.jpg

RAC是什么?

  1. RAC — ReactiveCocoa(RAC) Github 一个开源框架!!
  2. RAC具有函数式编程和响应式编程的特性。

为什么要学习RAC?

为了提高我们的开发效率。RAC在某些特定情况下开发时可以大大简化代码,并且目前来看安全可靠。

如何配置RAC?

习惯用cocopods管理,没安装cocopods的同学先安装.

pod 'ReactiveCocoa', '~> 7.0'

github ReactiveCocoa

[注:RAC在4.0之后的版本已改用swift编写]

RAC里面最常见和常用的类!!!

RACSignal : 信号类!

通过RACSignal创建一个信号!! (默认是: 冷信号!!)

通过订阅者!订阅这个信号!(变成: 热信号!!)

发送信号!!

RACDisposable:它可以帮助我们取消订阅.信号发送完毕了 ,失败了.

RACSubscriber(协议):订阅者(发送信号!)

RACSubject :信号提供者!!,自己可以充当信号,又能够发送信号!!

RACSignal的使用

#import <ReactiveCocoa/ReactiveCocoa.h>

- (void)viewDidLoad {
    [super viewDidLoad];
    
//    RACSignal: 信号类,当我们有数据产生,创建一个信号!
    //1.创建信号(冷信号!)
    //didSubscribe调用:只要一个信号被订阅就会调用!!
    //didSubscribe作用:利用subscriber发送数据!!
    RACSignal * signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        //3.发送数据subscriber它来发送
        [subscriber sendNext:@"你很厉害"];
        
        return nil;
    }];
    
    
    //2.订阅信号(热信号!!)
    //nextBlock调用:只要订阅者发送数据就会调用!
    //nextBlock作用:处理数据,展示UI界面!
    [signal subscribeNext:^(id x) {
        //x:信号发送的内容!!
        NSLog(@"%@",x);
    }];
    
}



RACDisposable的使用

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //1.创建信号(冷信号!)
    RACSignal * signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        //3.发送数据subscriber它来发送
        [subscriber sendNext:@"呵呵哈哈嘿嘿"];
        _subscriber = subscriber;
        return [RACDisposable disposableWithBlock:^{
            //只要信号取消订阅就会来这里
            //清空资源!!
            NSLog(@"哥么来了!!");
        }];
    }];
    
    
    //2.订阅信号(热信号!!)
   RACDisposable * disposable =  [signal subscribeNext:^(id x) {
        //x:信号发送的内容!!
        NSLog(@"%@",x);
    }];
    
    //默认一个信号发送数据完毕就会主动取消订阅
    //只要订阅者在,就不会自动取消订阅
    //手动取消订阅
    [disposable dispose];
    
}

RACSubject的使用

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //1.创建信号
    RACSubject * subject = [RACSubject subject];
    
    //2.订阅信号
    //不同的信号订阅的方式不一样!!(因为类型不一样,所以调用的方法不一样)
    //RACSubject处理订阅:拿到之前的_subscribers保存订阅者
    [subject subscribeNext:^(id x) {
        NSLog(@"接受到了数据:%@",x);
    }];
    

    
    //3.发送数据
    //遍历出所有的订阅者,调用nextBlock
    [subject sendNext:@"汉堡包"];
    
}

相关文章

  • RAC-ReactiveCocoa总结(一)

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

  • RAC-ReactiveCocoa总结(二)-rac_liftS

  • RAC-ReactiveCocoa的使用

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

  • 总结(一)

    从这一次开始,是为自己在写日记,做总结。 很多在课堂上说完的,表达过的,哭的痛的都觉得不想再说了,回到自己这里,聊...

  • 总结(一)

    美团对Linux运维工程师招聘岗位的面试题: 1、LINUX系统软件安装和卸载的常见方法 答: A.rpm包卸载:...

  • 总结一

    今天的课让我明白了人要有梦想,并且要去很好地实现它。梦想并不需要太坚持,而要把它习以为常,变成一种习惯。梦想不是遥...

  • 总结一

    一、java运行时内存分布 程序计数器:计数当前字节码行号 虚拟机栈:存储局部变量、操作栈数等(局部变量表在编译期...

  • 总结一

    --命令=参数-命令简写 参数 mkdir -p 父目录也创建 /a/b/ccat 查看tac 倒着查看ta...

  • 总结一

    有段日子没来这了。没来的原因很简单,没什么可以该记下来的,每每提笔,每每搁下。 今日过来亦无新词,只是中秋月近,想...

  • 总结一

    1.redis与MQ的区别:Redis是一个高性能的key-value数据库,它的出现很大程度补偿了memcach...

网友评论

    本文标题:RAC-ReactiveCocoa总结(一)

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