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,所以我可以访问模型属性?如果是这样,怎么样?
或者这是错的吗?更广泛地说,您将如何在视图控制器中共享一个模型?
非常感谢您的帮助
答
是的,只是施放它。我定义了一个将这个包装成一个简单调用的宏来使它更容易。
对于一个方式来实现模型的结构,也有这篇文章中的一些有用的线索:
http://www.bit-101.com/blog/?p=1969
(我们只是执行机型为单身本身,并使用国际志愿者组织从意见听对于更改属性。)
答
您可以强制转换它,就像你强制转换任何其他对象
CalcModel* model = (MyAppDelegate *)[[[UIApplication sharedApplication] delegate] model];
你必须instanciate模型在你appdelegate .m
我不会建议把任何数据相关的东西到你的AppDelegate类。而是创建一个包含Datamodel的Singleton类,然后您可以从所有视图控制器轻松访问它。 – samsam 2010-07-28 14:31:40