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实例,从而性能得到提升。没有延迟两秒的等待。