1

如果我使用 的实例NSArray来填充弹出按钮,那么就 MVC 而言,它NSArray需要在哪里初始化?我猜它会属于模型,但是如果是这种情况,我该如何初始化数组?我是否启动一个新的实现文件来包含该数组?(显然不想使用我的应用程序委托文件,因为它属于控制器,而不是模型。)

4

4 回答 4

2

MVC 的“模型”部分是应用程序存储、呈现和/或允许用户操作的数据。无论您的应用程序是在 Mac、iPhone 还是其他任何设备上运行,这在很大程度上都是相同的。“视图”是 UI。那是用户在屏幕上实际看到的东西。控制器是介于这两者之间的部分。它负责实现应用程序的特定行为逻辑以及将视图层“粘合”到模型层。

因此,话虽如此,要在弹出按钮中显示的项目数组可能是也可能不是模型的一部分。这完全取决于您正在实现的特定 UI。如果选择是在模型中表示的多个对象之间进行的,则数组的内容确实是模型的一部分,但控制器仍然可能以另一种形式将项目从模型中拉出并将它们转换为 NSArray。它也可能是一种在例如要执行的固定操作列表之间进行选择的方法,在这种情况下,它更合适地是控制器层本身的一部分。

换句话说,你的问题没有一个答案。但是,控制器至少会向 UI 提供有问题的数组,并且还可能对其内容完全负责。这完全取决于您要完成的工作。

于 2012-10-22T18:39:26.790 回答
0

这只是一个答案,并不一定是每个人都如何在 Objective C 中开发应用程序。

如果我的应用程序具有小数据模型或模型范围仅限于其视图,我会将模型放在 AppDelegate 或 viewControllers 本身中,如果它们的范围仅限于该视图。

它们将被初始化为最接近该数据在应用程序中有意义的位置。

有时你会看到一个“FAT”视图控制器,它代表一个主屏幕控制器或主屏幕控制器,人们会将模型堆放在那个类上。它很常见。

但是,如果我有一个具有大型数据模型的应用程序——许多模型的生命周期不限于视图的生命周期——那么我将在我的应用程序中创建一个名为 *myAppNameHere*AppModel 的类,并且我将集中存储应用程序模型,并根据需要使用服务类来请求数据以填充/更新模型。

这只是一种方法。好问题!

于 2012-10-22T18:49:57.197 回答
0

初始化将在模型对象中发生,但初始化可能会从视图控制器调用(我希望这些只是称为控制器——没有 ModelController 类。)可能在 viewDidLoad 但实际上最适合您的用例的地方会要求。

于 2012-10-22T18:34:32.173 回答
0

模型对象应该由控制器对象初始化,通常在viewDidLoad方法中。如果一个模型对象由另一个模型对象拥有(例如,如果您的自定义模型对象有一个NSArray实例变量,那么您的自定义对象是父对象,而NSArray是子对象),那么应该在初始化方法中初始化该子模型对象的父模型对象。

我想你NSArray本身就是一个模型对象,所以它应该在viewDidLoad控制器对象的方法中初始化。

于 2012-10-22T18:39:10.250 回答