本文共 953 字,大约阅读时间需要 3 分钟。
- 析构器写法是deinit{}
- 析构器是在类被销毁之前自动调用的一个方法。
- 析构器不允许我们手动调动。
- 析构器不允许显示调用父类的析构器。
- 析构器不存在重写,也不用加override关键字。如果子类和父类同时都写了析构器,那么先调用子类析构器,在去调用父类的析构器。
class Bank { static var coinsInBank = 10_000 class func receive(coins: Int) { coinsInBank += coins } class func distribute(conis: Int) { coinsInBank -= conis }}class Player { var conins: Int init(coins: Int) { self.conins = coins Bank.distribute(conis: coins) } func win(conins: Int) { self.conins += conins Bank.distribute(conis: conins) } func lost(conins: Int) { self.conins -= conins Bank.receive(coins: conins) } deinit { Bank.coinsInBank += conins }}var a: Player? = Player(coins: 100)var b = Player(coins: 100)print("a = \(a!.conins)")print("b = \(b.conins)")print("bank = \(Bank.coinsInBank)")a = nilprint("bank = \(Bank.coinsInBank)")复制代码
转载于:https://juejin.im/post/5d2d40285188254180610612