使全局变量不懒惰
问题描述:
我在Swift中构建了library并且它有一个全局变量(全局变量会自动初始化为懒惰)。初始化这个变量大约需要一秒。我的问题是,我想在应用程序加载时初始化变量,以便用户不必等待。我目前的做法是这样的:使全局变量不懒惰
My ViewController:
override func viewDidLoad() {
...
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), {
let _ = Foo()
})
}
My Framework File:
let myGlobalVariable = bar()
class Foo {
public init() {
myGlobalVariable
}
....
}
但这种方法并不像缝它做它的swiftlike方式。我如何以正确的方式初始化变量?
THX
答
还有就是“当”,你应该在你的框架初始化全局变量没有快捷方式,它取决于你的框架的流动,没有在你的框架将被调用它是用来直到有没有“FrameworkDidLaunch”方法,它是一个“静态”代码,就像任何其他类一样,但在另一个模块中,它甚至可以只是一束资源...
如果你想确保某人使用你的框架您随后将其写入文档并/或添加一个必须在使用之前调用的静态方法,如“MyFramwork.startMyFramework()”,或者如果您需要像API Key这样的用户的某些信息“MyFramwork.setApiKey(_ :) “ 和你选择它来初始化全局变量,并在调用此方法时断言。