Swift学习

003-Swift进阶-属性-lazy

2020-12-16  本文已影响0人  Stronger_J

一、存储属性

1、属性存储

class LJTest{
    var age = 18
    var name: String = "swift"
}
var t1 = LJTest()
print(class_getInstanceSize(LJTest.self))  //40字节(8 + 8 + 8 + 16)
image.png

2、延迟属性 lazy
延时加载存储属性是指当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 lazy 来标示一个延时加载存储属性。
<font color=red>注意:</font>必须将延时加载属性声明成变量(使用 var 关键字),因为属性的初始值可能在实例构造完成之后才会得到。而常量属性在构造过程完成之前必须要有初始值,因此无法声明成延时加载。

lazy var age = 18 //正确
lazy let age = 18 //错误

//对应sil
class LJTest {
  lazy var age: Int { get set }
  @_hasStorage @_hasInitialValue final var $__lazy_storage_$_age: Int? { get set }
  @_hasStorage @_hasInitialValue var age1: Int { get set }
  @_hasStorage @_hasInitialValue var name: String { get set }
  @objc deinit
  init()
}
上一篇下一篇

猜你喜欢

热点阅读