使全局变量不懒惰

问题描述:

我在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(_ :) “ 和你选择它来初始化全局变量,并在调用此方法时断言。