Swift 解初始化
在类实例需要被释放内存空间之前,需要调用“解初始化”以释放内存空间。关键字“deinit”用于释放系统资源占用的内存空间。解初始化仅适用于类类型。
解初始化来释放内存空间
Swift 4在不再需要实例时会自动释放它们,以释放资源。Swift 4通过自动引用计数(ARC)来处理实例的内存管理,详见《自动引用计数》。通常情况下,在实例被解初始化时,您不需要执行手动清理。然而,当您使用自己的资源时,可能需要进行一些额外的清理操作。例如,如果您创建了一个自定义类来打开一个文件并向其写入数据,在类实例被解初始化之前,您可能需要关闭该文件。
var counter = 0; // for reference counting
class baseclass {
init() {
counter++;
}
deinit {
counter--;
}
}
var print: baseclass? = baseclass()
print(counter)
print = nil
print(counter)
当我们使用playground运行上面的程序时,我们得到以下结果 –
1
0
当省略了print = nil语句时,计数器的值保持不变,因为它没有被释放。
var counter = 0; // for reference counting
class baseclass {
init() {
counter++;
}
deinit {
counter--;
}
}
var print: baseclass? = baseclass()
print(counter)
print(counter)
当我们在playground上运行上述程序时,我们得到以下结果 –
1
1