【问题标题】:iphone global settings - best way to implement it?iphone 全局设置 - 实现它的最佳方式?
【发布时间】:2010-02-19 06:33:37
【问题描述】:
我想要一些可以从我的应用程序中的任何位置访问的设置。有没有最好的方法来实现这个?现在我只是在我的应用程序委托中粘贴属性,然后通过以下方式访问它们:
ClientAppDelegate *appDelegate = (ClientAppDelegate *)[[UIApplication sharedApplication] delegate];
settingValue = appDelegate.setting;
【问题讨论】:
标签:
iphone
singleton
settings
cocoa-design-patterns
uiapplicationdelegate
【解决方案1】:
如果它们是持久的,请使用NSUserDefaults。如果不是,则将它们包装在一个类中,并为每个需要它们的类提供一个指针。在每种情况下,您都应该可以更改与配置对象的连接,以便 (1) 依赖关系变得明显(“啊哈,此代码的行为取决于配置”)和 (2) 您可以提供自定义配置对象用于测试目的。 Miško Hevery 有很多关于单例、耦合和测试的系列文章。您可以从名为 Singletons are Pathological Liars 的帖子开始,然后从那里跟进,这对您的设计很有帮助。
【解决方案2】:
使用NSUserDefaults——它们是存储应用程序设置的可靠、简单的方法,甚至在应用程序启动之间保持不变。