我正在开发一个iPhone应用程序,用于我一直在做的一些甜蜜的本科生研究。不幸的是,我的学校不提供软件工程/设计课程,所以当谈到OO设计中的最佳实践问题时,我做了大量的阅读。
我的困境:
我的应用程序加载一个视图(v1),在该视图中,只要用户单击按钮,v1的控制器类就会执行一个操作方法。此操作方法应该用对象填充数组。之后,用户将再次执行该操作,或者单击另一个选项卡来加载另一个视图。应用程序中的其他视图将使用v1填充的数组。
那么,应该在哪里声明这个共享数组呢?现在,它在AppDelegate类中,那时我正在测试没有GUI的特性。我是否应该抓取AppDelegate单例并在v1ViewController中向其添加项?是否应该声明为静态的?
谢谢你的帮助!
布法罗
编辑:
后续问题:当与单身人士互动时,与其交谈的更好方式是:
[[MyAwesomeSingleton sharedInstance] gimmeSomePizza]; 或
MySingleton *s = [MySingleton sharedInstance];
[s gimmeSomePizza]; 我想我想知道的是,您是每次调用sharedInstance方法,还是定义指向sharedInstance的指针,然后引用指针?
发布于 2009-04-22 17:44:49
使用应用程序委托来存储视图和视图控制器之间共享的数据是合理和适当的。
在我的应用程序中,我将应用程序委托视为MVC的控制器部分,而UIViews和视图控制器都是“视图”的一部分。我更喜欢使用一个名为被动视点的MVC变体,它使我的应用程序的模型和视图部分严格隔离,只有控制器将它们连接起来。
我假设存储的对象数组是应用程序的模型,因此将它们存储在应用程序委托中是有意义的。正如丹尼尔·D所说,没有必要让它静止不动。
应用程序委托实际上是您的程序的核心。在-applicationDidFinishLaunching:方法中创建和初始化模型和视图,并将模型数据和视图状态保存在-applicationWillTerminate:中。当视图控制器接收到更改模型的事件时,可以调用应用程序委托上的方法来进行这些更改。
发布于 2009-04-22 17:31:22
您可以将其存储在应用程序委托中的ivar中。您不需要使它是静态的,因为应用程序委托无论如何都是一个单例(从来没有超过一个实例)。
如果应用程序委托变得有点复杂,您可以将数据存储合并到单独的模型对象中,或者使用Core数据。
https://stackoverflow.com/questions/778279
复制相似问题