美文网首页iOS开发raciOS分享的demo
iOS RAC学习笔记 从零起步 (第四天)

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

作者: 睡不着的叶 | 来源:发表于2016-07-25 16:25 被阅读935次
坚持

前言

最近北京在下大雨,所以最近写文章的步伐收到了些许的阻挠,让有些朋友久等了。那么问题来了,北京下大雨关我写文章几毛钱的事情呢??答案就是,我写文章的时间都浪费在蹲屋里铲水了,穷人一族的心酸,伤不起啊,so,赶紧学习证明自己的价值,走向人生巅峰吧。。扯远了,收!收到了不少的简信,再次感谢大家对我的支持和关注,也很庆幸大家能够坚持学习前三天的课程,相信大家对RAC都有了一点自己的理解了,可以试着慢慢融入项目了,然后今天介绍的知识点比较散,主要是解答一些大家遇见的常见问题,但是都是实用干货,一起学习吧。

使用RAC注意事项

  • 第一点
    利用cocoa pods导入RAC的时候,需要注意版本问题,推荐大家2.5版本,这也是OC的最后一个版本,他以后的版本都是支持Swift的了,所以在OC环境下,会出现问题。
    'ReactiveCocoa', '~> 2.5'

  • 第二点
    RAC中很多方法都是block写的,使用的时候要注意循环引用和内存泄漏,从而使block和当前对象都无法释放。


@weakify 将当前对象声明为weak.. 这样block内部引用当前对象,就不会造成引用计数+1可以破解循环引用

@strongify 相当于声明一个局部的strong对象,等于当前对象.可以保证block调用的时候,内部的对象不会释放

  • 第三点
    属性类型的判断使用和监听调用

在所有情况下,RAC数据处理都带的id类型,一般情况下,都会根据数据结构,换成x所对应的类型,然后再处理数据。


还有情况,例如,RACCommand的实例能够决定是否可以被执行,这个特性能反应在UI上,而且它能确保在其不可用时不会被执行。通常,当一个命令可以执行时,会将它的属性allowsConcurrentExecution设置为它的默认值:NO,从而确保在这个命令已经正在执行的时候,不会同时再执行新的操作。当有时候,同时需要进行另外操作的时候,就要协调好信号的顺序。

RACCommand分析

RACCommand是RAC的一大基础控件,用于表示事件的执行,一般在应用的时候是用来处理数据请求,去主动执行请求数据的操作,能节省开发的很多时间。

command的初始化方法中有一个enabledSignal参数,这个signal就是用来指名command能否被执行的。例如,我们可以用此验证邮箱或信息是否合法,当用户输入的email地址合法时,它才能被执行,这里加以判断。self.emailValidSignal这个signal每当email的文本更新时,会发送NO或YES。
signalBlock参数在command需要执行时调用,这个block需要返回一个signal用来表示正在执行,之前将allowsConcurrentExecute的值设置为默认值NO,此时command会观察这个signal,而且在这个执行进度完成前,不允许新的执行。

当我们把command的触发事件设置成某一按钮的点击事件时候,这个按钮的enable状态会根据command能否执行来自动改变。当用户点击按钮时候,command会自动执行,如果你需要手动执行command,可以发送消息[RACCommand execute:]

RACTuple分析

RACTuple在RAC中称为元组,是一个元素类,父类是NSObject,既然是元组,那里面就会有很多元素。

1.初始化一个RACTuple对象数据来自一个数组
+ (instancetype)tupleWithObjectsFromArray:(NSArray *)array;

2.初始化一个RACTuple对象数据来自一个数组,如果convert设置为YES,那么NSNull值会被转换为RACTupleNil
+ (instancetype)tupleWithObjectsFromArray:(NSArray *)array convertNullsToNils:(BOOL)convert;

3.初始化一个RACTuple对象数据来自一个数组
+ (instancetype)tupleWithObjects:(id)object, ... NS_REQUIRES_NIL_TERMINATION;

4.返回元素数组

-(NSArray *)allObjects;

5.还可以增加元素

-(instancetype)tupleByAddingObject:(id)obj;

实例分析:
例如一个页面需要弹出很多种类型的提醒alert,如果一般根据tag判断,可能会麻烦,代码会很多。这时候,多种情况下,就可以用到元组。

响应事件也很简单

[[self.alert rac_buttonClickedSignal]subscribeNext:^(id x) {

    NSLog(@"%@",x);
    
}];

结语

RAC的学习笔记文字版本就先告一段落了,我也在不断学习的路上,还是需要靠项目经验来巩固基础知识。希望大家一起进步,生活不止眼前的苟且,如果银行卡里没有金钱,你和诗和远方的距离也就是一篇优美的文字。希望我小小的文字,能帮助你点滴。

相关文章

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

    前言 最近北京在下大雨,所以最近写文章的步伐收到了些许的阻挠,让有些朋友久等了。那么问题来了,北京下大雨关我写文章...

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

    前言 写技术文章和学技术是一样的,一定要持之以恒才能攻克它,我还继续在写,你们一定要坚持学下去哦。今天是第三天的学...

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

    前言 现在很多公司都崇尚RAC开发了,尤其是配合MVVM的架构,使整个项目的逻辑性更加的强,而且维护代码和迭代功能...

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

    前言 书接上回,上回讲到了RAC的基本概念还有基础的类,相信大家有一定的印象了。可能有很多人说还不懂怎么应用,或者...

  • (一)、iOS RAC - RACSignal

    (一)、iOS RAC - RACSignal (二)、iOS RAC - RACDisposable(三...

  • 2018-11-12

    iOS MVVM+RAC 从框架到实战 - 简书

  • RAC基础

    最近接触学习到了RAC(ReactiveCocoa),RAC是函数式+响应式编程结合 我们在iOS开发中,页面之间...

  • 从RAC到MVVM+RAC 学习笔记

    前言 最近学习使用MVVM + RAC 模式开发项目,这里分享些心得。 1. RAC入门资料 1.1 最快让你上手...

  • ReactiveObjC(RAC)基础

    最近学习了一下RAC的使用,参考了下面两篇文章 Jonzzs的【iOS 开发】ReactiveObjC(RAC)的...

  • MVVM

    iOS MVVM+RAC 从框架到实战 【长篇高能】ReactiveCocoa 和 MVVM 入门 iOS 最全R...

网友评论

  • a24df6838a47:command的使用就结束了?
  • 5da7528ddbb9:文章不错,刚开始学习RAC,以实例分析为例,alertview的最后执行响应事件是@selector中的方法还是在信号订阅中执行呢?
  • 冰三尺:很好的文章,学习了。

本文标题:iOS RAC学习笔记 从零起步 (第四天)

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