MVVM+RAC实践笔记

关于ReactiveCocoa

  • 在我看来RAC完全颠覆了传统的开发模式,使消息传递回调等机制复杂问题简单化,初始化与回调放在一起,使整个逻辑很具条理化。

  • ReactiveCocoa结合了一些编程模式:
    1.函数式编程:利用高阶函数,即将函数作为其它函数的参数。
    2.响应式编程:关注于数据流及变化的传播。
    基于以上两点,ReactiveCocoa被当成是函数响应编程(Functional Reactive Programming, FRP)框架。
    Github地址https://github.com/ReactiveCocoa/ReactiveCocoa


关于MVVM

  • 在MVVM中View和ViewController正式联系在一起。View仍然不能直接引用模型Model,当然Controller也不能。 相反他们引用视图模型ViewModel。 ViewModel是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他各种各样代码的好地方。 ViewModel不要引用UIKit。 展示逻辑放在了ViewModel中,比如Model的值映射到一个格式化字符串。实际上就是把原来ViewController做的一些事情放到了ViewModel中进行,为ViewController减负。

  • 在我看来,使用架构的时候要考虑到页面的复杂情况,不要为了架构而去架构。比如页面逻辑比较简单,只是现实一个列表的逻辑,MVC就足矣。没必要使用相对复杂的逻辑如MVVM或MVP。

关于MVVM+RAC

  • ReactiveCocoa所扮演的角色:进行ViewModel连接"粘合"工作。

1.例如在ViewController中给ViewModel的某个属性绑定信号,实时监听属性的变化。每当属性发生变化,ViewModel中就会发生一个信号出来,ViewController中对应的属性订阅这个信号,在订阅到这个信号的回调中执行后面的逻辑。

2.利用RACCommand执行execute方法来返回一个signal,订阅这个signal,这个signal中可以利用 initWithSignalBlock方法返回一个经过处理的signal,比如要把网络请求的数据返回并且解析成模型数组,都可以放在这个block中进行处理。

MVVM+RAC实践笔记_第1张图片
RAC在MVVM中所扮演的角色

实践笔记

我在我的Github中写了一个demo,其中基本涵盖了RAC的基础用法以及RAC+MVVM的实际应用。希望感兴趣的童鞋可以star一下,鼓励一下。MVVM+RAC DEMO

参考链接

http://www.raywenderlich.com/62699/reactivecocoa-tutorial-pt1
http://www.raywenderlich.com/74106/mvvm-tutorial-with-reactivecocoa-part-1
http://www.jianshu.com/p/e10e5ca413b7

你可能感兴趣的:(MVVM+RAC实践笔记)