【发布时间】:2017-06-14 11:36:25
【问题描述】:
首先,为 iOS 研究 MVVM 是一件令人头疼的事情,因为网上有多种不同的实现。到目前为止,我发现了 3 类 MVVM:
- 使用委派/协议更新 ViewController/View 的 MVVM
- MVVM 与 ReactiveCocoa 之类的 KVO 绑定
- MVVM 作为模型的简单帮助器/包装器类(无协议,无 KVO)
在 iOS 中实现 MVVM 是否需要委托模式或 KVO?
我在网上看到了许多 MVVM 示例,它们没有使用协议/委托,而是仅使用 MVVM 作为辅助类来封装模型并向 ViewController 提供状态。
这仍然被认为是 MVVM 吗?
【问题讨论】:
-
MVVM 绝对不是 Apple 在创建 Cocoa Touch 时的想法。 Apple dox 专门教授 MVC 是有原因的。在 iOS 中,MVVM 解决了什么问题?第一个答案总是一个大视图控制器。但为什么这是个问题?它不是。通过将对象数量加倍并创建数量惊人的观察者和视图扩展来修剪一个“大”对象并不是解决方案。 MVVM 是一种内存占用者,而内存是应用程序开发中最有价值的资源。如果 Apple 希望开发人员能够双向绑定所有内容,那么 Swift 至少会将其作为原生功能。
标签: ios mvvm delegates key-value-observing delegation