美文网首页iOS DeveloperiOS Development
ReactiveCocoa入门篇 (一)

ReactiveCocoa入门篇 (一)

作者: muyang_js的简书 | 来源:发表于2017-01-06 11:42 被阅读69次

    导读

    简单的说,RAC就是一个第三方库,他可以大大简化你的代码过程。

    官方的说,ReactiveCocoa(其简称为RAC)是由GitHub开源的一个应用于iOS和OS X开发的新框架。RAC具有函数式编程和响应式编程的特性。

    先来上demo链接

    RACSignal总结:

    /**

    *  RACSignal总结:

    一. 核心:

    1.核心:信号类

    2.信号类的作用:只要有数据改变就会把数据包装成信号传递出去

    3.只要有数据改变就会有信号发出

    4.数据发出,并不是信号类发出,信号类不能发送数据

    二. 使用方法:

    1.创建信号

    2.订阅信号

    三. 实现思路:

    1.当一个信号被订阅,创建订阅者,并把nextBlock保存到订阅者里面。

    2.创建的时候会返回 [RACDynamicSignal createSignal:didSubscribe];

    3.调用RACDynamicSignal的didSubscribe

    4.发送信号[subscriber sendNext:value];

    5.拿到订阅者的nextBlock调用

    */

    重申下

    //    RAC的核心就是信号,即RACSignal。

    信号可以看做是传递信号的工具,当数据变化时,信号就会发送改变的信息,以通知信号的订阅者执行方法。

    热/冷信号

    默认一个信号都是冷信号,也就是值改变了,也不会触发,只有订阅了这个信号,这个信号才会变为热信号,值改变了才会触发。

    //创建信号    

    RACSignal *signal = [RACSignal createSignal:^RACDisposable *(idsubscriber){

    [subscriber sendNext:@"signal"];

    [subscriber sendCompleted];

    return nil;

    }];

    //订阅信号

    [signal subscribeNext:^(id x){

    DLog(@"x = %@", x);

    } error:^(NSError *error){

    DLog(@"NSError = %@", error);

    }completed:^{

    DLog(@"completed");

    }];

    RACSubject总结:

    /**

    *  RACSubject总结:

    我们完全可以用RACSubject代替代理/通知,确实方便许多

    这里我们点击TwoViewController的pop的时候 将字符串"ws"传给了ViewController的button的title。

    步骤:

    // 1.创建信号

    RACSubject *subject = [RACSubject subject];

    // 2.订阅信号

    [subject subscribeNext:^(id x) {

    // block:当有数据发出的时候就会调用

    // block:处理数据

    NSLog(@"%@",x);

    }];

    // 3.发送信号

    [subject sendNext:value];

    **注意:~~**

    RACSubject和RACReplaySubject的区别

    RACSubject必须要先订阅信号之后才能发送信号, 而RACReplaySubject可以先发送信号后订阅.

    RACSubject 代码中体现为:先走第二个(TwoViewController)的sendNext,后走第一个(ViewController)的subscribeNext订阅

    RACReplaySubject 代码中体现为:先走第一个(ViewController)的subscribeNext订阅,后走第二个(TwoViewController)的sendNext

    可按实际情况各取所需。

    */

    相关文章

      网友评论

        本文标题:ReactiveCocoa入门篇 (一)

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