美文网首页swift
Swift Day08 属性

Swift Day08 属性

作者: 望穿秋水小作坊 | 来源:发表于2020-12-03 22:01 被阅读0次

一、属性

1. Swift 中跟实例相关属性分为哪两类?分别有什么特点(各说三点)?
  • 存储属性(Stored Property)
  • 类似于成员变量这个概念
  • 存储在实例的内存中
  • 结构体、类可以定义存储属性
  • 枚举不可以定义存储属性
  • 计算属性(Computed Property)
  • 本质就是方法(函数)
  • 不占用实例的内存
  • 枚举、结构体、类都可以定义计算属性
2. 为什么枚举不能定义存储属性
  • 因为枚举实例中要么存储原始值,要么存储关联值,没有位置放存储属性。
3. 计算属性的本质是什么?等价于给我们生成哪两个方法?
  • 本质就是函数
  • 等价于生成了 setXxx() 和 getXxx()
图示
4. 使用汇编观察上面图示中代码的 radius 和 diameter 设置值的时候,分别对应的汇编代码长什么样?
汇编观察
  • 可以看出:存储属性赋值是直接对相应的内存地址赋值
  • 计算属性赋值,是 setter 方法的调用
5. 思考为什么存储属性必须设置一个初始值?
  • 这是 swift 对存储属性的明确规定
  • 因为实例对象的内存里面就是存放着存储属性,本质上 swift 想保证实例对象的内存存的值是明确的
6. 为什么计算属性不能用 let 的修饰,只能用 var?
  • 计算属性的值是可能发生变化的,依赖于其他属性计算所得,所以不能 let 修饰
7.学到这里,我们可以想清楚 枚举的 rawValue 到底是怎么办到返回原始值的吗?
只读计算属性
8. 延迟存储属性如何定义?有什么特点和注意点?(各说一个)
延迟存储属性
9. 什么样的属性可以设置属性观察器?如何设置属性观察器?
属性观察器
10. inout 对计算属性、观察属性、一般存储属性分别有什么效果?或者说编译器是如何处理的?
inout 本质
11. 什么是类型属性?和存储实例属性对比?如何定义类型属性?
类型属性
12. 类型属性的最近使用场景是什么?有什么优点?
  • 单例


    单例
  • 延迟加载

  • 线程安全

  • 保证永远只有一份

  • 不可修改

相关文章

  • Swift Day08 属性

    一、属性 1. Swift 中跟实例相关的属性分为哪两类?分别有什么特点(各说三点)? 存储属性(Stored P...

  • Swift笔记(一)属性、析构、调用OC单例

    目录 swift属性存储属性懒加载属性计算属性属性监听类型属性 swift析构函数 swift调用OC单例类方法 ...

  • Swift 属性

    Swift 属性 在Swift中属性主要分为存储属性、计算属性、延迟存储属性、类型属性这四种,并且Swift还提供...

  • Swift进阶(三)--- 属性

    Swift的属性 在swift中,属性主要分为以下几种: 存储属性 计算属性 延迟存储属性 类型属性 一:存储属性...

  • 浅谈 Swift 中的属性(Property)

    Properties in Swift 前言 Swift 中的属性分为存储属性与计算属性,存储属性即为我们平时常用...

  • Swift:基础(二十)属性

    Swift 属性 Swift 属性将值跟特定的类、结构或枚举关联。 属性可分为存储属性和计算属性: 存储属性和计算...

  • SwiftProperty Swift3.0 属性

    Swift Peoperty Swift中有下列几种属性存储属性(Stored properties):存储实例的...

  • OC的@property与Swift的存储属性/计算属性类比

    Swift中的计算属性/存储属性与OC中的@property   Swift中引入了存储属性、计算属性的概念,存储...

  • Swift 学习笔记(三)

    Swift属性 Swift属性将值跟特定的类,结构体,枚举关联。分为存储属性和计算属性,通常用于特定类型的实例。属...

  • Swift学习-进阶02

    swift对象本质,一个swift的对象默认占用16字节大小,在内存中的结构: swift类结构: 属性 存储属性...

网友评论

    本文标题:Swift Day08 属性

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