Swift 面试题
目录

Swift 中什么是属性 (Property)?

· 约 4 分钟读完 · 第 68 / 196 章

推荐答案

在 Swift 中,属性(Property)是与类、结构体或枚举相关联的值。属性可以是存储属性(Stored Property),也可以是计算属性(Computed Property)。存储属性用于存储常量或变量的值,而计算属性则通过计算来获取值。

本题详细解读

存储属性(Stored Property)

存储属性是最简单的属性类型,它们用于存储类或结构体实例中的常量或变量。存储属性可以是常量(使用 let 声明)或变量(使用 var 声明)。

在上面的例子中,name 和 age 都是存储属性。name 是一个变量,可以在实例创建后修改,而 age 是一个常量,一旦实例创建后就不能再修改。

计算属性(Computed Property)

计算属性不直接存储值,而是提供一个 getter 和一个可选的 setter 来间接获取和设置其他属性或值。

在上面的例子中,area 是一个计算属性。它通过 width 和 height 来计算矩形的面积。area 的 setter 允许我们通过设置面积来调整 width 和 height。

属性观察器(Property Observers)

属性观察器用于监控存储属性的值变化,即使新值与当前值相同,也会触发观察器。属性观察器有 willSet 和 didSet 两种。

在上面的例子中,totalSteps 属性有一个 willSet 观察器和一个 didSet 观察器。每当 totalSteps 的值发生变化时,这两个观察器都会被调用。

类型属性(Type Property)

类型属性是属于类型本身的属性,而不是类型的实例。类型属性可以是存储属性或计算属性,并且它们使用 static 关键字来定义。

在上面的例子中,storedTypeProperty 和 computedTypeProperty 都是类型属性。它们属于 SomeStructure 类型本身,而不是它的实例。

延迟存储属性(Lazy Stored Property)

延迟存储属性是指其初始值在第一次使用时才计算的属性。延迟存储属性使用 lazy 关键字来定义。

在上面的例子中,importer 是一个延迟存储属性。它的初始值在第一次访问时才会被创建。