首先介绍一下什么是RAC:
ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾。ReactiveCocoa是一个高度抽象的编程框架,它真的很抽象,初看你不知道它是要干嘛的,等你用上了之后,就发现,有了它你是想干嘛就干嘛,编码从未如此流畅。
RAC的作用,以及有哪些功能:

如何在ReactiveCocoa中编写单元测试:为什么要编写单元测试?原因是单元测试有不少的优点,能够给我们的工作带来很大的帮助。单元测试的优点1.帮助开发人员编写代码,提升质量、减少bug。如果大家分析一下我们bug原因的构成,我想有会有一部分bug的原因是开发人员在编写工作代码的时候没有考虑到某些case或者边际条件。造成这种问题的原因很多,其中很重要的一个原因是我们对工作代码所要完成的功能思考不足,而编写单元测试,特别是先写单元测试再写工作代码就可以帮助开发人员思考编写的代码到底要实现哪些功能。例如实现一个简单的用户注册功能的业务类方法,用单元测试再写工作代码的方式来工作的话开发人员就会先考虑各种场景相关,例如正常注册、用户名重复、没有满足必要的填写内容......等等,之后就会编写相关的测试用例public Class UserSerivceTest()
在这里说道RAC那就必须得说一下编程思想这个词了:
1、面向过程:处理事情以过程为核心,一步一步的实现。
2、面向对象:万物皆对像
3、链式编程思想:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好

4、 响应式编程思想:不需要考虑调用顺序,只需要知道考虑结果,类似于蝴蝶效应,产生一个事件,会影响很多东西,这些事件像流一样的传播出去,然后影响结果,借用面向对象的一句话,万物皆是流

5、函数式编程思想:是把操作尽量写成一系列嵌套的函数或者方法调用。
函数式编程本质:就是往方法中传入Block,方法中嵌套Block调用,把代码聚合起来管理
函数式编程特点:每个方法必须有返回值(本身对象),把函数或者Block当做参数,block参数(需要操作的值)block返回值(操作结果)
代表:ReactiveCocoa。
RAC常见用法:
1.代替代理:rac_signalForSelector:用于替代代理

2.:代替KVO

3.监听事件 (代替addTarget)
rac_signalForControlEvents:用于监听某个事件。

4.代替通知
rac_addObserverForName:用于监听某个通知

5.监听文本框文字改变
rac_textSignal:只要文本框发出改变就会发出这个信号

在RAC中我们会看到bind,了解一下如何使用吧
1、创建信号

2、绑定信号

3.不知道返回值是啥,点进去看看

4.看完之后知道了,他的返回是要是一个信号,并且带两个参数:一个value,一个bool

6.现在我们已经绑定啦,然后我们愉快的运行吧,成功运行完成,一切都是那么风平浪静,接下来要发送信息了。

8.现在问题来了,我们都发送数据了,在哪里接收啊?bind方法中返回的就是signal,既然是信号,那么就订阅。


今天给大家的分享就到这吧!有收获,或者喜欢小编的可以关注小编同时也欢迎大家加入小编的iOS交流群687528266,点击链接加入群聊【iOS软件开发学习交流】:https://jq.qq.com/?_wv=1027&k=53OMouY,群里会提供相关面试资料,书籍欢迎大家入驻!大家一起交流成长!!
网友评论