我在Swift中建立一个library,它具有一个全局变量(全局变量会自动初始化为lazy)。初始化此变量大约需要一秒钟。我的问题是,我想在加载应用程序时初始化变量,以便用户不必稍后再等待。我当前的方法是这样的:
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
}
....
}
但是这种方法并不能像它那样迅速地完成。如何以正确的方式初始化变量?
谢谢
最佳答案
没有“何时”在框架中初始化全局变量的快速方法,这取决于框架的流程,在使用框架之前,不会调用框架中的任何内容,没有“FrameworkDidLaunch”方法,这是“静态”代码就像其他任何类一样,但是在另一个模块中,它甚至可能只是一堆资源...
如果您要确保有人按照您的意图使用框架,然后在文档中编写框架和/或添加一个在使用前必须调用的静态方法,例如“MyFramwork.startMyFramework()”,或者您需要从中获取一些信息API密钥“MyFramwork.setApiKey(_ :)”这样的用户,并使用它来初始化全局变量并断言是否调用了此方法。
关于ios - 使全局变量不偷懒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36822143/