位置:首页 > 高级语言 > Swift在线教程 > Swift 反初始化

Swift 反初始化

一个类实例需要被解除分配之前,“deinitializer”被调用来释放内存空间。关键字 “deinit' 被用于释放由系统资源占用的存储空间。反初始化仅适用于类类型。

反初始化并释放内存空间

Swift 当不再需要它们时自动取消分配实例,以释放资源。Swift 通过自动引用计数(ARC)处理实例的内存管理,如自动引用计数描述。通常情况下无需进行手动清理,实例会自动被释放。但是,当正在使用自己的资源,可能需要自己进行一些额外的清理。例如,如果创建一个自定义类来打开一个文件,写一些数据,可能需要关闭该文件在类实例释放之前。

var counter = 0;  // for reference counting
class baseclass {
    init() {
        counter++;
    }
    deinit {
        counter--;
    }
}

var print: baseclass? = baseclass()
println(counter)
print = nil
println(counter)

当我们使用 playground 运行上面的程序,得到以下结果。

1
0

当 print = nil 语句省略计数器的值保持不变,因为它没有反初始化。

var counter = 0;  // for reference counting

class baseclass {
    init() {
        counter++;
    }
    
    deinit {
        counter--;
    }
}

var print: baseclass? = baseclass()

println(counter)
println(counter)

当我们使用 playground 运行上面的程序,得到以下结果。

1
1