*延遲存儲(chǔ)屬性*
* 延遲存儲(chǔ)屬性是指當(dāng)?shù)谝淮伪徽{(diào)用的時(shí)候才會(huì)計(jì)算其初始值的屬性该贾。在屬性聲明前使用lazy來(lái)標(biāo)示一個(gè)延遲存儲(chǔ)屬性
* 最常見(jiàn)的延遲存儲(chǔ)屬性:
> * 執(zhí)行某個(gè)方法返回處理好的數(shù)據(jù)
> * 執(zhí)行某個(gè)閉包返回處理好的數(shù)據(jù)
* 注意:
* 必須將延遲存儲(chǔ)屬性聲明成變量(使用var關(guān)鍵字),因?yàn)閷傩缘某跏贾悼赡茉趯?shí)例構(gòu)造完成之后才會(huì)得到岳服。而常量屬性在構(gòu)造過(guò)程完成之前必須要有初始值缘回,因此無(wú)法聲明成延遲屬性吆视。
* 如果一個(gè)被標(biāo)記為lazy的屬性在沒(méi)有初始化時(shí)就同時(shí)被多個(gè)線程訪問(wèn),則無(wú)法保證該屬性只會(huì)被初始化一次
lazy var dataList: \[String] = {
''? ? print("我懶加載了")
''? ? return ["lee", "jack", "why"]
'' }()
'' let demoFunc = {
''? ? () -> [String]
''? ? in
''? ? print("我懶加載了")
''? ? return ["lee", "jack", "why"]
'' }
'' lazy var dataList2: [String] = self.demoFunc()