1.ReactiveCocoa简介
1.ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾。
2.ReactiveCocoa作用
在我们iOS开发过程中,经常会响应某些事件来处理某些业务逻辑,例如按钮的点击,上下拉刷新,网络请求,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocation)。但是这些事件都用不同的方式来处理,比如action、delegate、KVO、callback等。
其实这些事件,都可以通过RAC处理,ReactiveCocoa为事件提供了很多处理方法,而且利用RAC处理事件很方便,可以把要处理的事情,和监听的事情的代码放在一起,这样非常方便我们管理,就不需要跳到对应的方法里。非常符合我们开发中`高聚合,低耦合`的思想。
3.编程思想
在开发中我们也不能太依赖于某个框架,否则这个框架不更新了,导致项目后期没办法维护,比如之前Facebook提供的`Three20框架`,在当时也是神器,但是后来不更新了,也就没什么人用了。因此我感觉学习一个框架,还是有必要了解它的`编程思想`。
先简单介绍下目前咱们已知的`编程思想`。
3.1 `面向过程`:处理事情以过程为核心,一步一步的实现。
3.2 `面向对象`:万物皆对象
3.3 `链式编程思想`:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。a(1).b(2).c(3)
*`链式编程特点`:方法的返回值是block,block必须有返回值(本身对象),block参数(需要操作的值)
*`代表`:masonry框架。
*`练习一`:模仿masonry,写一个加法计算器,练习链式编程思想。
3.4 `响应式编程思想`:不需要考虑调用顺序,只需要知道考虑结果,类似于蝴蝶效应,产生一个事件,会影响很多东西,这些事件像流一样的传播出去,然后影响结果,借用面向对象的一句话,万物皆是流。
*`代表`:KVO运用。
*`练习二`:KVO底层实现。
3.5 `函数式编程思想`:是把操作尽量写成一系列嵌套的函数或者方法调用。
*`函数式编程特点`:每个方法必须有返回值(本身对象),把函数或者Block当做参数,block参数(需要操作的值)block返回值(操作结果)
*`代表`:ReactiveCocoa。
*`练习三`:用函数式编程实现,写一个加法计算器,并且加法计算器自带判断是否等于某个值.
4.ReactiveCocoa编程思想
ReactiveCocoa结合了几种编程风格:
`函数式编程(Functional Programming)`
`响应式编程(Reactive Programming)`
所以,你可能听说过ReactiveCocoa被描述为函数响应式编程(FRP)框架。
以后使用RAC解决问题,就不需要考虑调用顺序,直接考虑结果,把每一次操作都写成一系列嵌套的方法中,使代码高聚合,方便管理。
### 5.如何导入ReactiveCocoa框架
通常都会使用CocoaPods(用于管理第三方框架的插件)帮助我们导入。
PS:CocoaPods教程(http://code4app.com/article/cocoapods-install-usage)
`练习四`:创建一个新的工程,演示下,框架的导入。
`注意`:
* podfile如果只描述pod 'ReactiveCocoa','~> 4.0.2-alpha-1',会导入不成功
* 报错信息
* 需要在podfile加上use_frameworks,重新pod install才能导入成功。
PS:个人建议先研究纯OC版本的RAC(2.5),可不加上use_frameworks
6.ReactiveCocoa常见类。
学习框架首要之处:个人认为先要搞清楚框架中常用的类,在RAC中最核心的类RACSiganl,搞定这个类就能用ReactiveCocoa开发了。