Object-C--->Swift之(九)延迟存储属性

最近流行这个,先来一枚

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值