V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
easonl
V2EX  ›  Swift

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

  •  
  •   easonl · 217 天前 · 687 次点击
    这是一个创建于 217 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我是一个 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 组装呈现,对吗?
    3 条回复    2021-04-26 09:24:08 +08:00
    agagega
        1
    agagega   217 天前
    我对 SwiftUI 的理解,它主要做了两件事:利用 Swift 的语法做了一套声明式描述 UI 的方法;实现了根据数据改变而重新渲染 View 的一套机制。有了这两个东西,SwiftUI 在思路上和前端 Vue 、React 那些 MVVM 框架就比较像了。

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

    大一些的就得考虑架构问题了。Apple 没有一个官方的参考方案,但可以参考前端对这个问题的思考,比如像 Redux 一样把所有的状态都放到一起,然后把所有操作都抽象成 action,再用 reducer 去产生新的状态。不过这些架构的优点都是在实践中体会出来的。把握了这个思路,SwiftUI 上手写一些简单的 App 还是挺快的,就是 Apple 的文档做得不好。
    free9fw
        2
    free9fw   216 天前
    状态管理+双向绑定
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1257 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:48 · PVG 01:48 · LAX 09:48 · JFK 12:48
    ♥ Do have faith in what you're doing.