作者:爱在明天2502870673 | 来源:互联网 | 2022-12-23 12:52
1> 小智..:
在您的示例中,结果并不完全相同,具体如下:
单实例化.每次buttonPressed()
调用时,HeavyClass
都会实例化一个新的.使用lazy关键字时不是这种情况,该关键字仅在首次访问时创建实例.要匹配惰性语义,您必须heavyClass == nil
在每次访问之前检查和设置是否.
空性.您必须heavyClass
通过可选链接(heavyClass?.doStuff()
)或强制解包(heavyClass!.doStuff()
)来解开您每次要使用它的时间.您还可以将变量设置回nil
,这在第一个示例中是编译器错误.
懒惰变量的真正胜利是当你有多个使用变量的地方时.我相信你可以在这里发现重复:
func buttonPressed() {
if self.heavyClass == nil {
self.heavyClass = HeavyClass()
}
self.heavyClass?.doStuff()
}
func aDifferentButtonPressed() {
if self.heavyClass == nil {
self.heavyClass = HeavyClass()
}
self.heavyClass?.doSomethingElse()
}
这是使用惰性变量整理的:
func buttonPressed() {
self.heavyClass.doStuff()
}
func aDifferentButtonPressed() {
self.heavyClass.doSomethingElse()
}