if blankname == nil {
println("Student name is left blank")
}
当我们使用 playground 运行上面的程序,得到以下结果。
Student name is specified
Student name is left blank
必需的初始化
声明并初始化每个子类,“required”关键字的需要在init()函数之前定义。
class classA {
required init() {
var a = 10
println(a)
}
}
class classB: classA {
required init() {
var b = 30
println(b)
}
}
let res = classA()
let print = classB()
当我们使用 playground 运行上面的程序,得到以下结果。
10
30
10
反初始化
一个类实例需要被解除分配之前,“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








