📅  最后修改于: 2020-12-25 04:38:04             🧑  作者: Mango
在需要释放一个类实例之前,必须调用“ deinitializer”来释放内存空间。关键字“ 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)
当我们使用游乐场运行上述程序时,我们得到以下结果-
1
0
当print = nil语句被省略时,计数器的值保持不变,因为它没有被初始化。
var counter = 0; // for reference counting
class baseclass {
init() {
counter++;
}
deinit {
counter--;
}
}
var print: baseclass? = baseclass()
print(counter)
print(counter)
当我们使用游乐场运行上述程序时,我们得到以下结果-
1
1