1

我是 iOS 开发的新手,所以如果我的问题听起来微不足道,请原谅我。

我打算介绍 MVP 或 VIPER 模式。我来自网络背景,在网络应用程序中,我们曾经遵循不同的层/dll(用于模型、视图、通用等)。在 iOS 中遵循相同的分层方法(在这种情况下为框架)是否有意义,或者它会矫枉过正?我没有遇到任何为模型、视图和演示者创建不同框架的示例项目(基于 MVP)?如果有人可以分享我们可以用作入门项目的任何示例项目(基于 MVP),那就太好了。

提前致谢

4

2 回答 2

3

在 iOS 中,我们一般使用 MVC - Model/View/Controller。因此,如果您正在寻找 iOS 世界中的模拟,就是这样。如果您说您真的深入研究了 MVC,并且您发现某些东西非常不满意,因此想要引入不同的模式,那么这是一个不同的问题。

所以,不,你在像 MVC 这样的方法中看到的那种逻辑上的职责分离并不过分。事实上,“视图”和“控制器”类的划分是我们所做的一切(例如UIView子类、UIViewController子类等)的核心,所以你真正需要做的唯一一件事就是设计合适的“模型”类,然后你重新参加比赛。

但是,在回答您的问题时,您通常不会为模型、视图和控制器使用单独的框架目标。那可能是矫枉过正。通常,您可以通过在项目中明智地使用 Xcode 组/文件夹来跟踪所有内容。我们通常仅出于更多技术或逻辑原因(实时视图、应用程序扩展、在多个应用程序之间共享代码等)将内容放入框架中……请参阅 WWDC 2015 Building Modern Frameworks以讨论您通常何时使用框架)。

但是对于 MVC 与 MVP 或 VIPER(或 MVVM 或其他)的问题。我建议您简单地接受所有这些模式的共同精神(即职责分离)并将其应用到您的 iOS MVC 代码中。一旦你掌握了一些 iOS 经验,你就可以重新评估这个模式问题。

于 2016-11-21T23:46:03.063 回答
1

如果您是从 iOS 开发开始并正在寻找一个好的架构,请选择 VIPER。只要您:

1 - 自动生成 VIPER 文件

2 - 自动化 VIPER 模块初始化

要完成上述两个要求,请使用此 Xcode 插件 ( https://github.com/natangr/ViperTemplate ) 自动生成和初始化 VIPER 文件。它就像魅力一样!

并阅读这篇文章https://www.ckl.io/blog/best-practices-viper-architecture以获取有关如何在使用 VIPER 时实现自动化的更多提示。

我确实使用它,即使是非常小的项目(160 小时的开发)

于 2017-04-11T02:23:19.280 回答