ReactiveCocoaiOS 架构恩美第二个APP项目

iOS RAC学习笔记 从零起步 (第三天)

2016-07-18  本文已影响780人  睡不着的叶
持之以恒

前言

写技术文章和学技术是一样的,一定要持之以恒才能攻克它,我还继续在写,你们一定要坚持学下去哦。今天是第三天的学习任务了,有人反馈说,已经对RAC的代理机制爱不释手了,哈哈,这是好现象,今天要讲的是剩下的部分。也属于比较基础的应用,希望和我一起来掌握一下。

RACSequence和RACTuple简单使用

RACSequence是RAC中的集合类,用于代替NSArray,NSDictionary,可以使用它来快速遍历数组和字典。

遍历数组:

代码展示

遍历字典:
遍历出来的键值对会包装成RACTuple(元组对象)

字典转模型:

RACMulticastConnection简单使用

需求:假设在一个信号中发送请求,每次订阅一次都会发送请求,这样就会导致多次请求。
解决:使用RACMulticastConnection就能解决.

使用步骤:

 1.创建请求信号
   RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        NSLog(@"发送请求");
        return nil;
    }];
    // 2.订阅信号
    [signal subscribeNext:^(id x) {
        NSLog(@"接收数据");
    }];
    // 2.订阅信号
    [signal subscribeNext:^(id x) {
        NSLog(@"接收数据");
    }];
    // 3.运行结果,会执行两遍发送请求,也就是每次订阅都会发送一次请求


    // RACMulticastConnection:解决重复请求问题
    // 1.创建信号
    RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        NSLog(@"发送请求");
        [subscriber sendNext:@1];
        return nil;
    }];

    // 2.创建连接
    RACMulticastConnection *connect = [signal publish];
    // 3.订阅信号,
    // 注意:订阅信号,也不能激活信号,只是保存订阅者到数组,必须通过连接,当调用连接,就会一次性调用所有订阅者的sendNext:
    [connect.signal subscribeNext:^(id x) {
        NSLog(@"订阅者一信号");
    }];

    [connect.signal subscribeNext:^(id x) {
        NSLog(@"订阅者二信号");
    }];

    // 4.连接,激活信号
    [connect connect];

RACObserve简单使用

监听某个对象的某个属性,返回的是信号。
RAC中的KVO大部分都是宏定义,所以代码异常简洁,简单来说就是RACObserve(TARGET, KEYPATH)这种形式,TARGET是监听目标,KEYPATH是要观察的属性值,举个例子,如果UIScrollView滚动则输出success。

响应事件

1.按钮的点击

2. UIAlertView响应

3. UITextField响应

4. 通知监听

5. map用法

小结

今天的第三天知识点先总结这么多,希望大家多多应用,能够在使用中尝试下更多的方法,毕竟我只能起到抛砖引玉的作用,举一反三还需要你们的研究。希望我的小小文字,能带给你些许的帮助,也就是我的初心了。感谢大家对我的支持和私信。支持我就多多留言,添加个关注吧,我会持续更新文章的。

上一篇下一篇

猜你喜欢

热点阅读