Swift 取消初始化(Deinitialization)
在本教程中,我们将通过实例了解 Swift 取消初始化(Deinitialization)。
取消初始化(Deinitialization)是一个在不再需要类实例时取消分配类实例的过程。这将释放系统占用的内存空间。
我们使用 deinit
关键字创建一个 deinitializer
。例如,
class Race {
...
// create deinitializer
deinit {
// perform deinitialization
...
}
}
这里,deinit
是 Race
类的 deinitializer
(取消初始化)。
在您了解取消初始化之前,请确保您了解 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
类中创建了一个 deinitializer
。
deinit {
print("Memory Deallocated")
}
2.然后,我们创建了 Race
类的实例,并将其赋值给名为 result
的 Race
类型变量。
// create an instance
var result: Race? = Race()
这里,Race?
指结果是可选的,因此它可以存储两种类型的值:
Race
类型的值- 0
3.最后,我们将结果赋值为 0:
// deallocate instance
result = nil
这时释放实例。在释放类实例之前,会自动调用取消初始化。然后执行其中的语句。
注意:
- 在 Swift 中,我们只在手动取消分配实例时使用取消初始化。否则,Swift 会自动执行解除赋值。
- 取消初始化
deinitializer
只能与类一起使用,不能与结构一起使用。 - 每个类只能有一个取消初始化
deinitializer
。