适合自己的才是最好的
先介绍下MVC和MVVM
MVC
模型(Model):数据保存
视图(View):用户界面
控制器(Controller):业务逻辑
结合项目我们的MVC结构
结构
一个Controller 持有若干view 这些view可能复杂的嵌套若干View
一个Controller 持有若干model
事件传递
Controller将处理好的数据一层层向下分发到对应的View
View响应到的事件一层一层往上传递,最终由Controller来处理
Controller 处理所有的逻辑 数据 页面跳转 十分臃肿 不方便单元测试
在网查询若干天,没有的到相应的结果 网上的 基本都是这样的
iOS 开发的基本单位Controller: 讲清楚了一个Controller,应该就算整个讲清楚了 这个图好像不能讲清楚一个Controller里面的结构
咨询了安卓的同事 安卓有原生的双向绑定 iOS 没有
当前使用的方案: OC: OC + RAC Swift:Swift + Rxswift
找到了不错的项目 SwiftHub 这个项目只适用于结构简单的View
还有一种
每一个View 对应一个ViewModel 有些View只是展示数据 感觉并不需要对应ViewModel 这是一个大佬写的 感谢 但找不到原文地址了
MVVM
相对于MVC Controller 里面提取出来了所有的逻辑处理
Controller 持有ViewModel ViewModel 负责逻辑处理
Controller 负责UIKit跳转
对于复杂的View逻辑处理 可以另外增加相应的ViewModel 做逻辑处理
ViewModel 不含有UIKit的东西 可以方便的单元测试 移植
ViewModel 继承于公共的ViewModel BaseView BaseView 里面可以打印下 释放 这样 在控制器销毁的时候 BaseViewModel 销毁会打印出来 没有打印的话 就是有循环引用了
搜集到的RxSwift相关文献:
MVVM + RxSwift
RxSwift中文文档
https://beeth0ven.github.io/RxSwift-Chinese-Documentation/
参考阅读 RxSwift+MVVM
https://github.com/khoren93/SwiftHub
RxSwift
https://blog.csdn.net/kyl282889543/category_8866507.html