在需要释放类实例之前,必须调用析构器(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)
当使用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