Swift属性
Posted coderhong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift属性相关的知识,希望对你有一定的参考价值。
概述
Swift中跟实例相关的属性可以分为2大类
存储属性(Store Property)
- 类似成员变量的概念
- 存储在实例的内存中
- 结构体、类可以定义存储属性 枚举不可以定义存储属性
计算属性(Computed Property)
- 本质就是方法(函数)
- 不占用实例的内存
- 枚举、结构体、类可以定义计算属性
存储属性
关于存储属性,Swift有明确规定
在创建类 或 结构体的示例时,必须为所有的存储属性设置一个合适的初始值
- 可以在初始化器里为存储属性设置一个初始值
- 可以分配一个默认的值作为属性定义的一部分
计算属性
set传入的新值默认叫做newValue,也可以自定义
只读计算属性:只有get,没有set
定义计算属性只能用var,不能使用let 因为let代表常量:值是一成不变的
延迟存储属性
使用lazy可以定义一个延迟存储属性,在第一次用到属性的时候才会进行初始化
lazy属性必须是var,不能是let 因为let必须在示例的初始化方法完成之前拥有值
如果多条线程同时第一次方位lazy属性 无法保证属性只被初始化一次
延迟存储属性注意点
当结构体包含一个延迟属性时,只有var才能访问延迟存储属性
因为延迟存储属性初始化时需要改变结构体的内存
属性观察器
Swift可以为非lazy的var存储属性设置属性观察器
willSet会传递新值,默认叫newValue,didSet会传递旧值,默认叫oldValue
在初始化器中设置属性值不会触发willSet和didSet
在属性定义时设置初始值也不会触发willSet和didSet
属性观察器、计算属性的功能,同样可以应用在全局变量、局部变量身上
以上是关于Swift属性的主要内容,如果未能解决你的问题,请参考以下文章