我是iPhone开发的新手。
我正在构建一个具有多个视图和控制器的应用程序。只有一种型号。
我需要在所有控制器之间共享模型;所以我在App Delegate头文件中实例化了模型:
@interface MyAppDelegate
(...snip...)
@property (nonatomic, retain) CalcModel *model;
然后合成它。
在控制器内部,我试图像这样引用模型:
CalcModel* model = [[[UIApplication sharedApplication] delegate] model];
问题是编译器在协议
中找不到“-model”这可能是因为委托字段返回协议类型,而不是具体的MyAppDelegate类型...所以我应该将[[UIApplication sharedApplication]委托]转换为MyAppDelegate,以便我可以访问模型属性?如果是这样,怎么样?
或者这都错了?更广泛地说,您将如何在视图控制器之间共享模型?
非常感谢你的帮助答案 0 :(得分:0)
是的,只是施展它。我#define一个宏将它包装成一个简单的调用,以使其更容易。
关于实现模型结构的一种方法,本文中有一些有用的指针:
http://www.bit-101.com/blog/?p=1969
(我们只是将模型作为单例实现,并使用视图中的KVO来监听属性的更改。)
答案 1 :(得分:0)
您可以像对待任何其他对象一样对其进行类型转换
CalcModel* model = (MyAppDelegate *)[[[UIApplication sharedApplication] delegate] model];
你必须在appdelegate .m
中实现模型