请教关于开发 iOS APP 的思路问题,有关 Swift 的 MVVM 架构思路,我刚开始学,请包涵

2021-04-26 00:27:21 +08:00
 easonl
我是一个 SwiftUI/iOS 的开发初学者。关于 SwiftUI 提出的 MVVM 架构来建立响应式的程序架构,我能不能这么理解:

我开发一个 iOS APP,就好像我要做一个手机,比如一个手机的零件分为:屏幕,SoC,扬声器,无线模块。对于 MVVM 架构,我首先要定义的 M ( Model ),就是把这些零件,先定义出来(在 Model 层建立各种 Struct 或者 class )

然后在 VM 层( View Model )层,定义具体的零件的属性,例如屏幕分辨率是 1080P,SoC 是 5G-A14 的,扬声器是杜比立体声的,无线模块是 WIFI6 的。。。。

最后,通过顶层的 V 层( View )组装起来,成为一台手机。

我这么理解这个思路对吗?

================
以上,如果我的理解是对的,意味着我要做一个 APP,首先就是要拆解我整个 APP 设计的各个零部件,然后先写成 Model,然后再去构造 ViewModel,最后在 View 组装呈现,对吗?
1826 次点击
所在节点    Swift
3 条回复
agagega
2021-04-26 01:01:12 +08:00
我对 SwiftUI 的理解,它主要做了两件事:利用 Swift 的语法做了一套声明式描述 UI 的方法;实现了根据数据改变而重新渲染 View 的一套机制。有了这两个东西,SwiftUI 在思路上和前端 Vue 、React 那些 MVVM 框架就比较像了。

所以你说的把 App 自上而下拆成各个 View 可能是开发中不那么复杂的部分。更重要的其实是处理「事件-数据-视图」的关系,也就是你说的 ViewModel 。比较小的 App 直接通过 State 、Binding 这几个表达状态的东西一把梭就行。

大一些的就得考虑架构问题了。Apple 没有一个官方的参考方案,但可以参考前端对这个问题的思考,比如像 Redux 一样把所有的状态都放到一起,然后把所有操作都抽象成 action,再用 reducer 去产生新的状态。不过这些架构的优点都是在实践中体会出来的。把握了这个思路,SwiftUI 上手写一些简单的 App 还是挺快的,就是 Apple 的文档做得不好。
free9fw
2021-04-26 09:22:20 +08:00
状态管理+双向绑定
konnnnn
2021-04-26 09:24:08 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/773228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX