iPhone MVC应用程序:我应该在哪里放置模型?

问题描述:

我很新的iPhone开发。iPhone MVC应用程序:我应该在哪里放置模型?

我正在构建一个具有多个视图和控制器的应用程序。只有一个模型。

我需要在所有控制器之间共享模型;所以我已经在App Delegate头文件中实例化了模型:

@interface MyAppDelegate 
(...snip...) 
@property (nonatomic, retain) CalcModel *model; 

然后相应地合成它。

里面一个控制器,我试图参考模型,如下所示:

CalcModel* model = [[[UIApplication sharedApplication] delegate] model]; 

的问题是,编译器说“-model”没有协议

发现这可能是因为委托字段返回的协议类型,而不是具体的MyAppDelegate类型...所以我应该[[UIApplication sharedApplication]委托]到MyAppDelegate,所以我可以访问模型属性?如果是这样,怎么样?

或者这是错的吗?更广泛地说,您将如何在视图控制器*享一个模型?

非常感谢您的帮助

+0

我不会建议把任何数据相关的东西到你的AppDelegate类。而是创建一个包含Datamodel的Singleton类,然后您可以从所有视图控制器轻松访问它。 – samsam 2010-07-28 14:31:40

是的,只是施放它。我定义了一个将这个包装成一个简单调用的宏来使它更容易。

对于一个方式来实现模型的结构,也有这篇文章中的一些有用的线索:

http://www.bit-101.com/blog/?p=1969

(我们只是执行机型为单身本身,并使用国际志愿者组织从意见听对于更改属性。)

您可以强制转换它,就像你强制转换任何其他对象

CalcModel* model = (MyAppDelegate *)[[[UIApplication sharedApplication] delegate] model]; 

你必须instanciate模型在你appdelegate .m