fuz*_*oat 1 iphone model-view-controller cocoa-touch objective-c
我只是想确保我正在朝着正确的方向前进,如何构建一个简单的MVC应用程序.
// MODEL
@interface Reactor: NSObject {
NSNumber *temperature;
NSString *lastInspection;
NSNumber *activeRods;
}
Run Code Online (Sandbox Code Playgroud)
.
// CONTROLLER
@interface viewController: UIViewController {
UITextField *tempTextField;
UITextField *inspectTextField;
UITextField *activeTextField;
Reactor *reactor;
}
@property ...
...
-(IBAction)ButtonPressed;
@end
Run Code Online (Sandbox Code Playgroud)
.
我是否正确声明控制器中的reactor(dataModel)?我看到控制器的方式位于[VIEW]和[MODEL]之间,所以它需要链接到两者.
[VIEW]通过"IBActions"链接到[CONTROLLER]中实现的方法,后者又将消息发送到[MODEL]中的方法.[MODEL]执行所需的任何处理/数据操作,将任何所需结果发送回[CONTROLLER],而[CONTROLLER]又可用于更新[VIEW].
简单来说这听起来合情合理吗?
加里
对于一个非常小的简单模型,你可能会冒这个风险,但你真的不应该把它作为一种习惯来开发,因为随着你的项目变大,这种方法就会崩溃.
如果您有一个应用程序有两个或多个视图将数据输入和输出模型,会发生什么?当您的应用具有多个视图并从URL获取数据时会发生什么?如果要在html甚至命令行界面中使用数据模型,会发生什么.当你想在另一个应用程序中使用数据模型时会发生什么?
如果您要编写具有数千个用户,多个版本和可能的衍生产品的严格代码,您需要尽早养成良好的习惯.
数据模型的最佳方法是创建一个单例来保存它.我建议创建一个通用的单例类,然后将任何特定项目的模型作为该类的子类.这样,您就可以从应用程序的任何位置访问整齐的模型.
第二种最佳方法是将数据模型对象驻留在app委托中.然而,随着项目的扩展,这可能会变得笨拙.
当然,我所看到的每一条教学/教程信息几乎都忽略了数据模型,而不是教你如何为界面做眼睛糖果.数据模型只是简单的数组或一些固定在控制器侧面的数组.
相信我,你不希望成长和发展你的应用程序的噩梦只是发现它的数据模型逻辑和数据分散在十几个视图控制器上.咬牙切齿,从一开始就正确地做好,你永远不会出汗.
Edit01:
Singleton,我将不得不做一些研究,你能解释一下你如何从[CONTROLLER]访问它吗?只是好奇如果[MODEL]再次进入AppDelegate,您将如何从[CONTROLLER]访问它?
您可以通过以下方式将数据模型驻留在应用程序委托中:(1)使数据模型对象成为应用程序委托的属性,以及(2)使用应用程序委托的全局引用表单:
MyDataModelClass *theModel=[[UIApplication sharedApplication] delegate] dataModelProperty];
Run Code Online (Sandbox Code Playgroud)
创建一个单例是一个更多的参与.您可以像使用NSFileManger一样使用它.你会以同样的方式引用它.
NSFileManger *fm=[NSFileManager sharedInstance];
Run Code Online (Sandbox Code Playgroud)
这可确保应用程序中只有一个文件管理器处于活动状态.您可以从控制器以相同的方式调用数据模型:
MyDataModelClass*theModel = [MyDataModelClass sharedInstance];
如果您仔细设计数据模型对象,使其完全控制写入哪些信息,您可以安全地在任何地方使用它,而不必担心您的数据会被一个粗心的代码行所破坏.
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |