我有一个偶尔被调用的方法。它依赖于一个我不希望实例化的属性,除非调用了该方法,但与此同时,如果已经实例化了该属性,我也不想重新实例化该属性。这是延迟加载的目的吗?

我目前正在使用:

property = property ?? Property()

似乎工作正常,但我想对此方法进行完整性检查。

最佳答案

您所要做的就是将属性声明为lazy,并且仅在需要时才对其进行初始化。

class MyClass {
  lazy var myLazyArray = [String]()
}

var myObject = MyClass() // myObject.myLazyArray still not initialized
myObject.myLazyArray.append("hello") // Now we're in business!
print(myObject.myLazyArray)

10-05 20:20