没有使用 ReactiveCocoa, 也可以实现 MVVM 架构方式.
分别解释 MVVM 在 iOS 架构方式中的作用:
M: Model 层, 数据层, 这里做一些对基础实体的定义,数据的远程获取, 对本地数据的操作等
V: View 层, 视图展示层, 有些人倾向于将 ViewController 也放在 视图展示层, 毕竟, 抽离之后, 在 ViewController 做的事情都转移到了 ViewModel 中.
VM: ViewModel 层, 业务逻辑层, 这里处理一切与 UI 状态处理无关的业务处理.
问题1 网络请求怎么处理? 将网络请求通过 ViewModelService 来实现(后续会讲 ViewModelService), 将网络请求处理限定在 数据层去处理, 而不是业务逻辑层(ViewModel 层.) 为什么呢? 因为 ViewModel 层更加关心拿到对应的数据来做对应的显示, 比如网络请求拿回了一个实体数据, ViewModel 层直接执行对应的方法让 View 重新绘制视图既可以了.
问题 2 在使用了 ReactiveCocoa 中的网络请求, 或者是用户操作中有错误出现, 应该怎么处理? 这时推荐使用一个 热信号, 比如 RACSubject, 当有错误出现时, 对应的信号订阅者就能做出处理.
[注] 在 MVVM 模式的架构中, 应当转变一个观念: 以 ViewModel 为轮转中心, 在 MVC 中是以 ViewController 作为轮转中心实现的. 如果按照之前以 ViewController 作为轮转, 在 ViewModel 中是不可避免的导入 UIKit 的内容, 因此, 有必要找到当 ViewModel 导航时, 通知 View 层中的 ViewController 实现对应的导航操作.
not about
多频传媒