Swift 中有“didGet”这样的东西吗每当访问变量时运行的方法

作者:编程家 分类: swift 时间:2025-08-06

Swift中的属性观察器:didSet和willSet

在Swift中,我们可以使用属性观察器来在属性的值发生变化时执行特定的代码。属性观察器提供了两个选项:didSet和willSet。

didSet属性观察器

当属性的值被设置之后,didSet属性观察器就会被调用。我们可以在这个观察器中执行一些额外的代码,以响应属性值的变化。

下面是一个例子,展示了如何使用didSet属性观察器:

swift

class Person {

var name: String {

didSet {

print("Name changed to \(name)")

}

}

init(name: String) {

self.name = name

}

}

let person = Person(name: "John")

person.name = "Alice"

在上面的例子中,我们定义了一个名为name的属性,并给它添加了一个didSet属性观察器。当name的值被设置为新的值时,didSet观察器会被调用,并打印出相应的消息。

输出结果为:

Name changed to Alice

可以看到,当我们将name的值从"John"改变为"Alice"时,didSet属性观察器被调用,并打印出了相应的消息。

willSet属性观察器

与didSet属性观察器相对应,willSet属性观察器会在属性的值被设置之前调用。我们可以在这个观察器中执行一些准备工作,以备属性值的变化。

下面是一个例子,展示了如何使用willSet属性观察器:

swift

class Person {

var age: Int {

willSet {

print("Age will be set to \(newValue)")

}

}

init(age: Int) {

self.age = age

}

}

let person = Person(age: 30)

person.age = 40

在上面的例子中,我们定义了一个名为age的属性,并给它添加了一个willSet属性观察器。当age的值被设置为新的值之前,willSet观察器会被调用,并打印出相应的消息。

输出结果为:

Age will be set to 40

可以看到,当我们将age的值从30改变为40时,willSet属性观察器被调用,并打印出了相应的消息。

在Swift中,我们可以使用属性观察器来在属性的值发生变化时执行特定的代码。didSet属性观察器会在属性的值被设置之后调用,而willSet属性观察器会在属性的值被设置之前调用。这两个属性观察器为我们提供了在属性变化时执行自定义代码的机会,使我们能够更好地控制和管理属性的变化。

无论是在简单的示例代码中还是在实际的项目中,属性观察器都可以帮助我们实现更加灵活和可靠的代码逻辑。通过使用属性观察器,我们可以轻松地监测和响应属性的变化,从而实现更加强大和可维护的代码。