Swift引入了一種新的機制–延遲存儲屬性機制,在第一次被調用時才會被計算初始值的屬性,聲明時需要使用lazy修飾符。
注意:定義屬性時一定得是變量(var),常量是無法使用延遲存儲機制。
當某個實例持有另一個創建成本較大的實例的引用時,使用延遲存儲可以降低內存開銷,從而提升性能。
class Bird
{
var name:String
var age:Int
init(age:Int)
{
self.name="鳥類"
NSThread.sleepForTimeInterval(2)
self.age=age
}
}
class Ostrich
{
var name:String=""
var age=Bird(age:3)
}
var ostrich=Ostrich()
ostrich.name="鴕鳥"
print(ostrich.name)
運行上面的代碼,我們明顯發現延遲了兩秒才打印出來 鴕鳥 很明顯我們根本就沒有關心Ostrich的age屬性,所以這兩秒鐘的等待是沒有必要的,所以我們可以考慮在代碼中改下
lazy var age=Bird(age:3)
這樣在沒有調用age的話不會進行創建Bird實例,從而性能得到提升。沒有延遲兩秒的等待。