上下文
我概括了我刚刚继承的iOS项目的一些方面。我想要的一件事是可以从应用程序中的任何位置访问的数据结构,其中用户控件可以访问特定于应用程序的样式信息(UIColor
定义等)。
问题:如果我已经定义了一个包含需要“全局”访问的数据的数据结构,那么它被认为是实例化此对象的正确位置,以及其他对象的正确方法获得参考?一些研究提出了以下选择:
AppDelegate
的属性;在applicationDidFinishLaunching
上初始化它;通过((myAppDelegate *)[UIApplication sharedApplication].delegate).getStyleDefs
。AppDelegate
实例化来延迟加载或急切地。)我还有其他选择吗?
答案 0 :(得分:2)
Matt Gallagher关于Singletons, AppDelegates and top-level data的文章是对目标C中处理此问题的各种方法的利弊的一个很好的参考。非常简短的总结是:使用单身人士。
其他地方针对单身人士的主要论据大致分为两个阵营:
default*
开头,并且在您可能以shared*
开头的情况下。注意要实例化你的单身人士,最好的现代方法是使用Grand Central Dispatch,如note on Objective C singletons中所述。
答案 1 :(得分:0)
也许创建一个名为SharedConstants(.h/.m)
的单独文件,并在那里提供所有应用程序范围的常量。
添加类似
的内容 #define sharedColor [UIColor colorWithRed...]
在文件的.m
版本中,然后您就可以在包含SharedConstants.h
文件的任何其他类中使用它。