【发布时间】:2015-02-26 21:32:11
【问题描述】:
我想初始化我的单例对象,该对象在我的应用程序中存储和管理整个类的应用程序设置。此外,应该通过在启动时从NSUserDefaults 加载数据来初始化单例实例。但是,我不完全确定在启动时应该在哪里初始化单例。
在 Cocoa 应用程序中,我首先在 applicationWillFinishLaunching: 中编写了单例初始化代码,并从 NSUserDefaults 中获取参数。但是,后来我发现如果我还在故事板中设置的初始视图控制器中编写单例初始化代码(不带参数!),这将无法正常工作,因为类的viewWillLoad:、viewDidLoad: 等视图控制器的名称在applicationWillFinishLaunching:之前调用。
所以现在我确定我应该在viewWillLoad: 中编写单例初始化代码早于 applicationWillFinishLaunching,但仍然不确定它是否合适。具体来说,我知道NSApplicationMain 是启动时调用的第一个方法,但似乎下一个方法不是AppDelegate 中的任何内容,至少如果您使用情节提要。
总结一下,我想问的是:
如果你使用故事板,在
NSApplicationMain之后会调用什么类的什么方法。我应该在我的应用程序中的何处编写我的单例初始化代码?我想尽快初始化它。
iOS 和 OS X 应用程序有区别吗?
【问题讨论】:
-
如果您需要,可以立即在
initialize中进行操作 -
单例的美妙之处在于,至少从单例的角度来看,第一次引用单例的位置并不重要。单例的
sharedInstance代码(或任何你称之为的代码)应该进行所有必要的配置,并且在代码中第一次遇到sharedInstance方法的任何地方都会进行此初始配置。 -
感谢您的回答。尽快初始化它是不是很愚蠢?我认为它花费的时间非常非常少,并且可以改善维护......
标签: ios cocoa singleton uiapplicationdelegate