析构器只适用于类类型,当一个类的实例被释放前,析构器会被立即调用(类似delloc?)。析构器用关键字deinit。
析构过程原理
在类的定义中,每个类最多只能有一个析构器,而且析构器不带任何参数。
析构过程类似于delloc。
class Bank {
static var coinsInBank = 10_000
static func distribute(coins numberOfCoinsRequest:Int) -> Int {
let numberOfCoinsToVend = min(numberOfCoinsRequest, coinsInBank)
coinsInBank -= numberOfCoinsToVend
return numberOfCoinsToVend
}
static func receive (coin:Int) {
coinsInBank += coin
}
}
class Player {
var coinsInPurse : Int
init(coins:Int) {
coinsInPurse = Bank.distribute(coins: coins)
}
func wins(coins:Int) {
coinsInPurse += Bank.distribute(coins: coins)
}
deinit {
Bank.receive(coin: coinsInPurse)
}
}