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

时间:2010-07-28 12:41:02

标签: iphone objective-c model-view-controller

我是iPhone开发的新手。

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

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

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

然后合成它。

在控制器内部,我试图像这样引用模型:

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

问题是编译器在协议

中找不到“-model”

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

或者这都错了?更广泛地说,您将如何在视图控制器之间共享模型?

非常感谢你的帮助

2 个答案:

答案 0 :(得分:0)

是的,只是施展它。我#define一个宏将它包装成一个简单的调用,以使其更容易。

关于实现模型结构的一种方法,本文中有一些有用的指针:

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

(我们只是将模型作为单例实现,并使用视图中的KVO来监听属性的更改。)

答案 1 :(得分:0)

您可以像对待任何其他对象一样对其进行类型转换

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

你必须在appdelegate .m

中实现模型