在此article ,它说(引用下面的代码):“您必须使用 lazy 来防止多次创建闭包。”
private lazy var variable:SomeClass = {
let fVariable = SomeClass()
fVariable.value = 10
return fVariable
}()
为什么 lazy 会阻止多次创建闭包?为什么缺少惰性会导致它多次求值?
最佳答案
你引用的教程代码是这样的:
private lazy var variable:SomeClass = {
let fVariable = SomeClass()
fVariable.value = 10
return fVariable
}()
对比一下:
private var variable:SomeClass {
let fVariable = SomeClass()
fVariable.value = 10
return fVariable
}
第一个将 variable
初始化为新创建的 SomeClass 实例,最多一次(甚至可能不会那么多次)。第二个是只读计算变量,每次读取其值时都会创建一个新的 SomeClass 实例。
关于swift - 带闭包的惰性变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33114865/