ios - 如何在 iOS 应用程序中设计 Model 类(遵循 MVC 模式)

标签 ios objective-c model-view-controller

我将开始开发一个新的 iOS 应用程序并计划实现 MVC 模式。以下是我目前对模型、 View 和 Controller 的理解。

查看 - 负责显示用户界面(例如 xib 文件等...)

Controller - 这将是模型和 View 之间的桥梁。我们可以考虑这个类别下的 View Controller 。此外,我们可以编写一个 NSObject 的子类来进行网络操作(使用 NSURLConnection)。

型号 - 我知道它负责存储将在 View 中显示的数据。但是,它是如何存储的呢?它将是单例类还是应该是具有自定义 init 方法的 NSObject 的普通子类?但是,它将如何持久化数据?如果有人可以用一个清晰​​的例子来解释这一点,那将非常有帮助。提前致谢!!

最佳答案

模型表示您的应用程序正在使用的数据 .它不一定要对数据持久性做任何事情。

一般来说,您必须考虑在您的应用程序中发挥作用的对象的种类。让我们假设一个简单的待办事项列表应用程序。在这种应用程序中,您的 型号很可能会包含一个任务类(或一些类似的概念)。在 Objective-C 中,您可以创建类,添加一些有意义的属性。在其最基本和最简单的版本中,它可能如下所示:

@interface Task : NSObject
@property (nonatomic, strong) NSDate *creationDate;
@property (nonatomic, strong) NSString *description;
@property (nonatomic        ) BOOL done;
@end

然后,在运行时,您可以实例化此类,以便对生成的对象执行某些操作。例如。用户可以将任务标记为 done .

这些对象将存在于操作系统的某个内存区域中,称为堆。存在于堆上的数据不会被持久化。为了持久化数据,您必须使用数据持久化框架,例如 Core Data , Realm或原始 SQLite .

此外,对模型类使用单例也没有多大意义,因为您通常希望实例化它们的多个对象。另一方面,单例的特点是它在您的应用程序的生命周期内仅实例化一次。这与模型层的目的相矛盾。

关于ios - 如何在 iOS 应用程序中设计 Model 类(遵循 MVC 模式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29561481/

相关文章:

iphone - 什么时候dispatch_release()?

iphone - 核心数据 : crash when merge change, 由于 'objc_msgSend'

objective-c - MVC 和 UIButton

javascript - 在 Ember.js 中使用复选框切换和绑定(bind) bool 值

ios - 如何只在多次按下时才触发按钮 Action ?

ios - 如何通过单击单元格的 subview 获取 UITableViewCell 的 indexPath - 获取不兼容的指针类型警告

android - XDK HTML5 应用程序中的 CSS 渐变兼容性问题

ios - UIUserNotificationSettings 的问题

c++ - 实时查看循环缓冲区中的数据

ios - NSLayoutContraints : How to position a bottom view below the higher of two labels?