乐趣区

关于iOS开发:iOS-MVC架构设计模式和MVVM

本文转载自:星星月亮 0

MVC(Model-View-Controller)

iOS 应用程序都遵循 MVC 架构,iOS13 推出的 SwiftUI 除外,SwiftUI 的设计遵循的 MVVM.
MVC 是构建 iOS App 的规范模式,是苹果举荐的一个用来组织代码的权威范式,市面上大部分 App 都是这样构建的

  • Model(模型):数据(业务)模型,负责解决和存取数据
  • model 里可能基本不是 oc 对象,可能是网络 api. 数据库跟新了, 模型得告诉控制器
  • View(视图):界面,负责显示数据和与用户交互
  • Controller(控制器):业务逻辑,相当于一个解决核心,负责管理 Model 和 View, Model 和 View 都是控制器里的对象,次要负责将数据模型展现在视图上,同时也负责界面交互的解决。
  • Model 和 View 是不相通的,所有的事件,都只能通过控制器替换
  • 控制器的工作就是展现模型,对模型了如执掌。
  • 控制器为视图翻译和格式化它们须要的模型数据
  • 管制 UI 如何显示就是它天天干的事件

作为一个开发者,有一个学习的气氛跟一个交换圈子特地重要,这是一个我的 iOS 交换群: 711315161,不论你是小白还是大牛欢送入驻,分享 BAT, 阿里面试题、面试教训,探讨技术,大家一起交流学习成长!

控制器要和模型或是视图沟通是很容易的,因为控制器自身就持有模型和视图,模型和视图对象就是在控制器中创立的,所有控制器很容易就能够获取模型和视图对象的属性和办法

视图要和控制器沟通能够通过 button 增加点击 (target-action) 事件,delegate, datasource delegate

模型要和控制器沟通要通过 kvo 和告诉(Notification)

会弄很多个 MVC, 层层蕴含,互相帮助
iOS 里有 API, 容许一个控制器把其余的 MVC 当作本人的视图,如下图.

像下图,这样可不行,会把本人都看晕,所以打一个红圈圈,淘汰掉

MVVM(Model-View-ViewModel)



MVC 尽管是 storyboard 我的项目中 iOS app 的规范模式,然而它也有一个别称叫 Massive View Controller(重量级控制器),也就是当业务逻辑比较复杂的时候 ViewController 打代码会很多。为了给控制器瘦身,就引入 ViewModel 层用来解决网络申请,数据转换等业务逻辑(这些在 MVC 里也是由控制器来做)。而控制器更多的是负责和界面展现,用户交互相干的性能。并且把 controller 和 view 合并成 View.
这样就由 MVC 衍生出 MVVM 架构。

  • Model:数据
  • View: 视图展现(UIView + UIViewController)
  • ViewModel: 连贯 View 和 Model

swiftUI(MVVM)

iOS13 推出的 SwiftUI 苹果的规范架构就是 MVVM。不须要咱们像在用 storyboard 的时候一样,原本苹果 MVC 是苹果的规范模式,咱们硬是要拆一个 MVVM 进去

退出移动版