美文网首页
Swift语法总结:属性

Swift语法总结:属性

作者: IAM121 | 来源:发表于2020-03-16 23:15 被阅读0次

Swift中跟实例相关的属性可以分为2大类

1.存储属性

类似于成员变量的概念
存储在实例的内存中
结构体 类可以定义存储属性
枚举不可以定义存储属性

1.1 在创建类或 结构体的实例时,必须为所有的存储属性设置一个合适的初始值

可以在初始化器里为存储属性设置一个初始值
可以分配一个默认的属性值作为属性定义的一部分
Snip20200316_50.png

2.计算属性

本质就是方法(函数)
不占用实例的内存
枚举 结构体 类都可以定义计算属性

2.1 set传入的新值默认叫做newValue,也可以自定义

Snip20200316_50.png

2.2 只读计算属性:只有get ,没有set

Snip20200316_50.png

2.3 延迟存储属性 ,使用lazy可以定义一个延迟存储属性,在第一次用到属性的时候才会进行初始化

Snip20200316_9.png

注:如果多条线程同时第一次访问lazy属性,无法保证属性只初始化1次

2.4 延迟存储属性注意点

当结构体包含一个延迟存储属性时,只有var才能访问延迟存储属性,因为延迟属性初始化时需要改变结构体的内存


Snip20200316_10.png

2.5 属性观察器

可以非lazy的var存储属性设置属性观察器


Snip20200316_11.png
willSet会传递新值,默认叫newValue
didSet会传递旧值,默认叫做oldValue

2.6 全局变量 局部变量

属性观察器 计算属性的功能,同样可以应用在全局变量 局部变量身上


Snip20200316_12.png

2.7 类型属性

2.7.1 实例属性:只能通过实例去访问
存储实例属性:存储在实例的内存中,每个实例都有1份
计算实例属性
2.7.2 类型属性: 只能通过类型去访问
存储类型属性:整个程序运行过程中,就只有1份内存(类似于全局变量)
计算类型属性
可以通过static 定义类型属性,如果是类,也可以用关键字class
Snip20200316_13.png

类型属性注意点

1 不同于存储实例属性,你必须给存储类型属性设定初始值
因为类型没有像实例那样的init初始化器来初始化存储属性

2 存储类型默认是lazy,会在第一次使用的时候才初始化
2.1 就算被多个线程同时访问,保证只会初始化一次
2.2 存储类型属性可以是let

3 枚举类型也可以定义类型属性(有存储类型属性, 计算类型属性)

相关文章

  • Swift语法总结:属性

    Swift中跟实例相关的属性可以分为2大类 1.存储属性 1.1 在创建类或 结构体的实例时,必须为所有的存储属性...

  • Swift最新语法总结

    swift最新语法总结(函数) swift最新语法总结(枚举类型与结构体) swift最新语法总结(类的使用) s...

  • Swift 中为什么要有 willSet 和 didSet,它们

    Swift 拥有类似 C# 的属性声明语法: 但是,Swift 还另有 willSet 和 didSet 行为。它...

  • swift字符串

    Swift字符串常用操作总结 版本2:增加了Swift 2.0的语法,与Swift 1.2的语法相比,主要是:ad...

  • Swift语法 -- [08 - 属性]

    1. 存储属性&计算属性 Swift中跟实例对象相关的属性可以分为2大类 存储属性(Stored Property...

  • Swift 枚举(enum)详解

    Swift基础语法总结,来自苹果官方文档: 枚举(Enumeration) 枚举在Swift中是 first-cl...

  • Swift总结

    swift总结(整理) -- 基本语法 Import swift的import等同于C/C++的include,不...

  • Swift: KeyPath

    Swift 中可以使用 KeyPath 来获取属性值,语法为\Type.property.property.......

  • Swift学习:属性

    本篇将详细总结介绍Swift属性的用法;属性是与特定的Swift类、结构体、枚举相关联的值;与其他语言相比,属性不...

  • swift语法总结

    swift语法 swift初见第一个程序输出hello,world! 在swift中这行代码就算一个完整的程序。你...

网友评论

      本文标题:Swift语法总结:属性

      本文链接:https://www.haomeiwen.com/subject/plvwehtx.html