析构是当类实例不再需要时,对其进行解分配的过程。这会释放系统占用的内存空间。
我们使用 deinit
关键字来创建析构器。例如,
class Race {
...
// create deinitializer
deinit {
// perform deinitialization
...
}
}
在这里,deinit
是 Race 类的析构器。
在学习析构器之前,请确保您了解 Swift 构造器。
示例:Swift 析构器
// declare a class
class Race {
var laps: Int
// define initializer
init() {
laps = 5
print("Race Completed")
print("Total laps:", laps)
}
// define deinitializer
deinit {
print("Memory Deallocated")
}
}
// create an instance
var result: Race? = Race()
// deallocate object
result = nil
输出
Race Completed Total laps: 5 Memory Deallocated
在上面的例子中:
1. 我们在 Race 类中创建了一个析构器。
deinit {
print("Memory Deallocated")
}
2. 然后,我们创建了 Race 类的一个实例,并将其分配给一个名为 result 的 Race 类型变量。
// create an instance
var result: Race? = Race()
这里,Race? 表示 result 是一个 可选类型,因此它可以存储两种类型的值:
- 类型为 Race 的值。
nil
值。
3. 最后,我们将 nil
分配给 result。
// deallocate instance
result = nil
这将解分配该实例。析构器在类实例被解分配之前被自动调用。并且它里面的语句会被执行。
注意:
- 在 Swift 中,我们只在需要手动解分配实例时才使用析构器。否则,Swift 会自动进行解分配。
- 析构器只能用于类,不能用于结构体。
- 每个类只能有一个析构器。