返回

Swift实用教程:存储属性、计算属性及属性观察器的妙用

IOS

存储属性

存储属性用于存储值。它们可以是变量(可变)或常量(不可变)。

  • 变量使用var声明,常量使用let关键字声明。
  • 变量可以重新赋值,常量不能重新赋值。
  • 存储属性必须在初始化器中初始化。

例如:

class Person {
    var name: String // 存储属性
    let age: Int // 存储属性

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

计算属性

计算属性用于从其他属性或常量计算值。它们不能存储值,因此不能声明为变量或常量。计算属性使用getset关键字声明。

  • get关键字用于计算属性的值。
  • set关键字用于设置计算属性的值。

例如:

class Person {
    var name: String // 存储属性
    let age: Int // 存储属性

    var fullName: String { // 计算属性
        get {
            return "\(name) \(age)"
        }
    }

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

let person = Person(name: "John", age: 30)
print(person.fullName) // 输出: "John 30"

属性观察器

属性观察器用于在属性值发生变化时执行自定义动作。属性观察器可以是willSetdidSetdynamic

  • willSet观察器在属性值将要被设置时执行。
  • didSet观察器在属性值已被设置后执行。
  • dynamic观察器在属性值发生变化时执行。

例如:

class Person {
    var name: String {
        willSet {
            print("Name will be changed to \(newValue)")
        }
        didSet {
            print("Name has been changed to \(name)")
        }
    }

    init(name: String) {
        self.name = name
    }
}

let person = Person(name: "John")
person.name = "Mary" // 输出: "Name will be changed to Mary"
                     // 输出: "Name has been changed to Mary"

存储属性、计算属性及属性观察器的使用

存储属性、计算属性和属性观察器是Swift语言中强大的特性,它们可以使您的代码更加健壮、可维护和可重用。

  • 存储属性用于存储值。
  • 计算属性用于从其他属性或常量计算值。
  • 属性观察器用于在属性值发生变化时执行自定义动作。

您可以根据您的需求组合使用这些特性来构建健壮、可维护和可重用的代码。