有没有办法根据当前语言重新初始化惰性变量?
lazy var localizableDictionary: NSDictionary! = {
guard let path = Bundle.main.path(
forResource: "Localizable",
ofType: "strings",
inDirectory: nil,
forLocalization: Localizer.shared.currentLanguage)
else {
fatalError("Localizable file NOT found")
}
return NSDictionary(contentsOfFile: path)
}()
答案 0 :(得分:2)
它的lazy var
显然是一个变量,因此如果有必要,Swift不会阻止你在任何时间修改它的值。
你可以简单地说,
guard let path = Bundle.main.path(
forResource: "Localizable",
ofType: "strings",
inDirectory: nil,
forLocalization: Localizer.shared.currentLanguage)
else {
fatalError("Localizable file NOT found")
}
self.localizableDictionary = NSDictionary(contentsOfFile: path)
<强> FYI 强>
延迟初始化(有时也称为惰性实例化,或者是懒惰的 loading)是一种延迟创建对象或某些对象的技术 其他昂贵的过程,直到它需要。在为iOS编程时, 这有助于确保您仅使用所需的内存 你需要它。
从http://mikebuss.com/2014/06/22/lazy-initialization-swift/
复制的上述报价如果你真的需要一个常数,请不要认为lazy var是常数,你会选择立即让它:)
希望有所帮助