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

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

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

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

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