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