析構器只適用于類類型,當一個類的實例被釋放前,析構器會被立即調用(類似delloc?)。析構器用關鍵字deinit。
析構過程原理
在類的定義中,每個類最多只能有一個析構器,而且析構器不帶任何參數(shù)。
析構過程類似于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)
}
}