簡體   English   中英

在Swift中,我們是否需要初始化惰性存儲屬性?

[英]In Swift, do we need to initialize lazy stored properties?

在蘋果公司新的Swift編程語言中,我遇到了以下問題:

類和結構必須在創建該類或結構的實例時將其所有存儲的屬性設置為適當的初始值。存儲的屬性不能保持不確定狀態。

以上規則甚至對@lazy存儲屬性也有效嗎?

你不可以:

惰性存儲屬性是其首次使用之前不會計算其初始值的屬性...

您必須始終將惰性屬性聲明為變量(使用var關鍵字),因為只有在實例初始化完成之后才能檢索其初始值。

當屬性的初始值依賴於外部因素(其值直到實例的初始化完成之后才知道)時,惰性屬性才有用。

資源

基本上意味着它沒有值,並且初始化后不需要立即值。

惰性屬性必須具有一個初始化程序。

在此處輸入圖片說明

但是,通過將其標記為@lazy,僅在需要時才計算初始化程序的值。

class DataImporter{}

class DataManager {
    @lazy var importer:DataImporter = DataImporter()
}

var dm = DataManager()

// do stuff with dm and other lines of code

// later if you reference dm.importer
dm.importer // <-- at this moment the call to DataImporter is made

可以這樣考慮:惰性存儲屬性確實具有初始值,但尚未計算。

您描述的規則意味着對象必須自行確定初始值,不能在init返回后指定該值,例如由工廠指定。 惰性存儲屬性也是如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM