Swift值类型与引⽤类型

Swift值类型与引⽤类型

1.延迟存储属性

class KZHTeacher{
    lazy var age: Int = 18
}
  • 用 lazy 修饰的存储属性
  • 延迟存储属性必须有一个默认值
  • 延迟存储在第一次访问的时候才被赋值 
  • 延迟存储属性并不能保证线程安全 
  • 延迟存储属性对实例对象大小有影响

2.类型属性 

class KZHTeacher{
    static let shareInstance: KZHTeacher = KZHTheacher()
    privet init(){}
}
  • 使用关键字 static 修饰 
  • 类型属性必须有一个默认的初始值
  • 类型属性只会被初始化一次

 3.结构体的初始化

  • 结构体不需要自定义初始化方法,这是因为编译器在结构体中自动帮我们生成了初始化方法
  • 如果我们的属性有默认初始值,系统会提供不同的默认初始化方法
  • 如果我们自定义初始化方法,系统就不会帮我们生成初始化方法

4.结构体是值类型 

  • mutating(只用于值类型,值类型本身创建之后是不允许修改的,如果要修改,需要使用 mutating 关键字)
  • 结构体中的方法调度是静态调度 (编译,链接完成之后当前的函数地址就已经确定存放在了代码段)
  1. Sysbol Table: 存储符号位于字符串表的位置
  2. Dynamic Symbol Table: 动态库函数,位于符号表的偏移信息
  • 类中方法调度是一般函数表调度,同时和函数声明的位置与关键字有关
  1. extesion 声明方法
  2. final关键字
  3. static关键字
  4. @objc关键字
  5. dynamic关键字

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值