MVVM架构如何实现在Objective-C的MVVM架构?我需要示例项目来学习mvvm体系结构,并且我需要知道在model-view,viewModel以及如何在objective-c中分离需要什么?正常项目和mvvm项目有什么区别?实现在Objective-C
回答
Jesto我可以给你详细介绍你简要问的问题。即使它是解释,你也可以很容易地理解我在这里发布的内容,因为它有源代码示例,你可以直接尝试源代码。
模型层不如言自明,因为它看起来。如您所料,它将包含您的模型对象,可能包含覆盖大部分图层表面的 。在门票的例子中,你会有 有一个Ticket结构存在于你的模型中。
我发现下列组件也是模型层的一部分:
网络代码。形状应该是这样的。理想情况下,您只需在整个应用中使用一个班级进行网络通信。 持久性代码。你可以用Core Data实现这个,或者直接将NSData blob直接保存到磁盘。 解析代码。任何解析网络响应等的对象也应包含在模型层中。
虽然模型对象和解析器是域特定的,但网络代码将具有高度可重用性。
控制器将使用您的模型层中的所有元素来定义应用程序中的信息流。
当用户与您的应用程序进行交互,它们与 视图层进行交互。该视图被认为是您的应用程序的“哑巴”部分,因为它不应包含任何业务逻辑,因为它是 。在代码方面,您通常会看到: :
UIView子类。这些范围从基本的UIView到复杂的自定义UI控件。 一个UIViewController(可以说)。由于一个UIViewController强烈与它自己的根的UIView和其不同的周期 (的loadView,viewDidLoad中)耦接,我个人认为这是本 层的一部分,但不是每个人都同意。 动画和UIViewController转换。 属于UIKit/AppKit,Core Animation和Core Graphics的类。
在此图层中找到的典型代码气味以不同方式显示, 但归结为在您的视图 图层中包含与UI无关的任何内容。一个典型的代码味道是从一个 UIViewController进行网络调用。
在你的UIViewController中放入一堆代码并且使用 来完成它是很诱人的,所以你可以达到那个期限。不要这样做!在短期的 期限内,您可能会节省几分钟时间,但从长远来看,您可能会在寻找错误时损失数小时,或者在想要在另一个视图控制器内重用代码时遇到问题。
模型 - 视图 - 视图模型,或MVVM,是一个MVC推导。从概念上讲,它与 类似。最大的区别在于 层之间的通信,而不是控制器,您使用视图模型。
实际上,当MVVM具有FRP框架来支持MVVM时,它会发光。 由于模型现在由视图模型和视图模型 观察到,所以FRP范例成为管理信息流的自然选择。这导致层之间的更好的分离, 它转换为易于测试的解耦组件。底线:体系结构很重要,但在我看来,正确的 编程范例将影响更多的代码的整体质量。同样重要的是要注意,通常情况下,您不会在同一应用中使用不同的方法。这包括 体系结构和范例。你可能会认为这会破坏代码库中的 一致性,但你应该总是使用正确的 工具来完成这项工作。
模型 - 视图 - 控制器(MVC)设计模式在 应用三种角色中的一个分配对象:模型,视图或控制器。 模式不仅定义了对象在应用程序中扮演的角色,还定义了对象之间相互通信的方式。通过抽象边界 将三个物体类型中的每一个与其他物体分开,并与其他类型的物体通过这些边界进行通信。 应用程序中某个MVC类型对象的集合有时称为图层 - 例如,模型 图层。
MVC是Cocoa应用程序良好设计的核心。采用这种模式的好处 很多。这些应用程序中的许多对象往往更易于重用,并且它们的接口倾向于更好地定义为 。具有MVC设计的应用程序也比其他应用程序更容易扩展。此外,很多Cocoa技术和体系结构都基于MVC,并且要求您的自定义对象扮演MVC角色之一。
Difference between Normal and MVVM
模型 - 负责域数据或操纵数据的数据访问层 ,认为“人”或“的personDataProvider” 类。
观看次数 - 负责表示层(GUI),iOS环境下的任何事情都考虑以'UI'前缀开头的所有内容。
控制器/演示/视图模型 - 胶水或模型和视图之间的调停,一般负责通过使对视图执行用户的操作和更新 与从变化视图改变模型 该模型。
最新和最伟大的MV(X)种的MVVM是MV的最新 (X)样因此,让我们希望它出现在考虑的问题 MV( X)以前面临。从理论上讲,Model-View-ViewModel看起来非常不错。视图和模型对我们来说已经很熟悉,但也是代表视图模型的调解器。 MVVM这是很相似 的MVP: 的MVVM把视图控制器作为视图 还有就是视图和模型此外,它确实像MVP的监督版本绑定之间没有紧密结合;然而,这次不是在视图和模型之间,而是在 视图和视图模型之间。那么iOS现实中的视图模型是什么? 它基本上是你的视图和它的 状态的UIKit独立表示。视图模型调用示范和变化与更新的型号更新自己 ,并且由于视图 和视图模型之间,我们有一个结合,第一个相应的更新。
检查出来这个主题 - >What is the difference between MVC and MVVM?
模型 - 视图 - 视图模型基本的例子就是在这里 - >https://github.com/futurice/mvvm-example-objc,也许接下来的步骤中,您可以使用,因为它反应可可可以更有效的与MVVM - >https://github.com/ReactiveCocoa/ReactiveViewModel
反应可可 - >https://github.com/ReactiveCocoa/ReactiveCocoa
好运:)
- 1. ObjectiveC如何实现class_createInstance(Class cls,size_t extraBytes)?
- 2. 如何在ObjectiveC/C中实现免费桥接?
- 3. 在的ObjectiveC
- 4. 在的ObjectiveC
- 5. 在的ObjectiveC
- 6. 在的ObjectiveC
- 7. 在ObjectiveC中实现自定义类的代理时引用计数
- 8. 这是在ObjectiveC中实现工厂模式的常用方法吗?
- 9. 如何在ObjectiveC中将非静态变量从接口移动到实现?
- 10. 突破在的ObjectiveC
- 11. NumberFormatter - ObjectiveC
- 12. 在ObjectiveC中排序数组
- 13. Swift:import ObjectiveC vs Foundation
- 14. ObjectiveC中的MulticastDelegate
- 15. 中的ObjectiveC
- 16. JSON ObjectiveC - 错误
- 17. Curl,Asana&ObjectiveC
- 18. ObjectiveC随机数字
- 19. ObjectiveC项目组织
- 20. ObjectiveC分配和init?
- 21. Unity3D iOS插件使用ObjectiveC源来实例化类
- 22. 在ObjectiveC中测试类的加载
- 23. 在drawRect方法中删除形状? - ObjectiveC
- 24. 问题在使用ObjectiveC++编译器
- 25. ObjectiveC在tableview中保存图像
- 26. 在ObjectiveC中读取.doc(MSWord)文件?
- 27. 如何动画浮动UIView在ObjectiveC
- 28. 用intC键映射在objectiveC中
- 29. 在InterfaceBuilder中加载图像序列-ObjectiveC
- 30. 在objectiveC中比较两个日期?
问计库,教程是不是在这里有效的主题。如果您需要一个示例项目,请在线为您寻找一本教程。 –