Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 简单的MVC设置/设计?_Objective C_Iphone_Cocoa Touch_Model View Controller - Fatal编程技术网

Objective c 简单的MVC设置/设计?

Objective c 简单的MVC设置/设计?,objective-c,iphone,cocoa-touch,model-view-controller,Objective C,Iphone,Cocoa Touch,Model View Controller,我只是想确保我在如何构造一个简单的MVC应用程序方面朝着正确的方向前进 // MODEL @interface Reactor: NSObject { NSNumber *temperature; NSString *lastInspection; NSNumber *activeRods; } 我在控制器中声明反应堆(数据模型)正确吗?在我看来,控制器位于[VIEW]和[MODEL]之间,因此需要两者的链接 [VIEW]通过“iActions”链接到[CON

我只是想确保我在如何构造一个简单的MVC应用程序方面朝着正确的方向前进

// MODEL
@interface Reactor: NSObject {
    NSNumber *temperature;
    NSString *lastInspection;
    NSNumber *activeRods;   
}

我在控制器中声明反应堆(数据模型)正确吗?在我看来,控制器位于[VIEW]和[MODEL]之间,因此需要两者的链接

[VIEW]通过“iActions”链接到[CONTROLLER]中实现的方法,后者反过来向[MODEL]中的方法发送消息。[MODEL]执行所需的任何处理/数据操作,将所需结果发送回[CONTROLLER],而[CONTROLLER]可用于更新[VIEW]

简单来说,这听起来合理吗


gary

你可以为一个非常小、简单的模型冒险,但你真的不应该把它作为一种习惯,因为这种方法会随着你的项目变得更大而崩溃

当一个应用程序有两个或多个视图同时从模型中获取数据时会发生什么情况?当您有一个具有多个视图的应用程序并从URL获取数据时会发生什么情况?如果要在html甚至命令行界面中使用数据模型,会发生什么。如果您希望在另一个应用程序中同时使用数据模型,会发生什么情况

如果你要写的代码很严肃,会有成千上万的用户,多个版本,甚至可能是衍生产品,那么你需要尽早养成好习惯

数据模型的最佳方法是创建一个单例来保存它。我建议创建一个通用的单例类,然后将任何特定项目的模型作为该类的子类。这样,您就拥有了一个整洁的包含模型,可以从应用程序中的任何位置访问该模型

第二种最好的方法是将数据模型对象停在app委托中。然而,随着项目规模的扩大,这种情况可能会变得很麻烦

当然,我看到的每一条教学/教程信息都忽略了数据模型,而倾向于教你如何为界面制作令人眼花缭乱的东西,这并没有什么帮助。数据模型只是简单的数组,或者是固定在控制器一侧的一些数组

相信我,你不会希望你的应用不断增长的噩梦只会发现它的数据模型逻辑和数据分散在十几个视图控制器上。咬紧牙关,从一开始就正确地去做,你永远不必为此流汗

Edit01:


辛格尔顿,我得做点什么 研究,你能解释一下怎么做吗 您可以从 [控制器]?我只是好奇 [MODEL]再次进入AppDelegate 您将如何从服务器访问它 [控制器]

通过(1)使数据模型对象成为应用程序委托的属性,以及(2)使用应用程序委托的全局引用表单,将数据模型停驻在应用程序委托中:

MyDataModelClass *theModel=[[UIApplication sharedApplication] delegate] dataModelProperty];
创建一个是一个复杂的过程。您使用它就像使用NSFileManger一样。你可以用同样的方式引用它

NSFileManger *fm=[NSFileManager sharedInstance];
这可确保应用程序中只有一个文件管理器处于活动状态。您可以从控制器以相同的方式调用数据模型:

MyDataModelClass*模型=[MyDataModelClass sharedInstance]


如果仔细设计数据模型对象,使其能够完全控制向其写入的信息,则可以在任何地方安全地使用它,而不必担心数据会被一行粗心的代码破坏

对于一个非常小、简单的模型,你可以冒这个风险,但你真的不应该把它作为一种习惯,因为这种方法会随着你的项目变得更大而崩溃

当一个应用程序有两个或多个视图同时从模型中获取数据时会发生什么情况?当您有一个具有多个视图的应用程序并从URL获取数据时会发生什么情况?如果要在html甚至命令行界面中使用数据模型,会发生什么。如果您希望在另一个应用程序中同时使用数据模型,会发生什么情况

如果你要写的代码很严肃,会有成千上万的用户,多个版本,甚至可能是衍生产品,那么你需要尽早养成好习惯

数据模型的最佳方法是创建一个单例来保存它。我建议创建一个通用的单例类,然后将任何特定项目的模型作为该类的子类。这样,您就拥有了一个整洁的包含模型,可以从应用程序中的任何位置访问该模型

第二种最好的方法是将数据模型对象停在app委托中。然而,随着项目规模的扩大,这种情况可能会变得很麻烦

当然,我看到的每一条教学/教程信息都忽略了数据模型,而倾向于教你如何为界面制作令人眼花缭乱的东西,这并没有什么帮助。数据模型只是简单的数组,或者是固定在控制器一侧的一些数组

相信我,你不会希望你的应用不断增长的噩梦只会发现它的数据模型逻辑和数据分散在十几个视图控制器上。咬紧牙关,从一开始就正确地去做,你永远不必为此流汗

Edit01:


辛格尔顿,我得做点什么 研究,你能解释一下怎么做吗 您可以从 [控制器]?我只是好奇 [MODEL]再次进入AppDelegate 您将如何从服务器访问它 [控制器]

通过(1)使数据模型对象成为应用程序委托的属性,以及(2)使用应用程序委托的全局引用表单,将数据模型停驻在应用程序委托中:

MyDataModelClass *theModel=[[UIApplication sharedApplication] delegate] dataModelProperty];
创建一个是一个复杂的过程。您使用它就像使用NSFileManger一样。你可以用同样的方式引用它

NSFileManger *fm=[NSFileManager sharedInstance];
这可确保应用程序中只有一个文件管理器处于活动状态。您可以从控制器以相同的方式调用数据模型:

MyDataModelClass*模型=[MyDataModelClass sharedInstance]

如果仔细设计数据模型对象,使其能够完全控制向其写入的信息,则可以在任何地方安全地使用它,而无需担心