swift析構過程

/**

1.析構過程原理

2.析構函數操作

在一個類的實例被釋放之前,析構函數被立即調用,用關鍵字deinit來標示析構函數,類似於初始化函數用init來標示。析構函數只適用於類類型

*/




/**

deinit {

    // 析構過程

}

*/

struct Bank {

    static var coinsInBank = 10000;

    static func vendCoins(var numberOfCoinsToVend: Int) -> Int {

    numberOfCoinsToVend = min(numberOfCoinsToVend, coinsInBank);

    coinsInBank -= numberOfCoinsToVend;

    return numberOfCoinsToVend;

    }

    static func receiveCoins(coins: Int) {

        coinsInBank += coins;

    }

}

class Player {

        var coinsInPurse: Int;

        init(coins: Int) {

            coinsInPurse = Bank.vendCoins(coins);

        }

        func winCoins(coins: Int) {

                coinsInPurse += Bank.vendCoins(coins);

        }

        deinit {//有點像OC中的dealloc

                    Bank.receiveCoins(coinsInPurse);

        }

}

var playerOne: Player? = Player(coins: 100);

print("A new player has joined the game with \(playerOne!.coinsInPurse) coins");

print("There are now \(Bank.coinsInBank) coins left in the bank");


playerOne!.winCoins(2000);

print("playerOne won 2000 coins & now has \(playerOne!.coinsInPurse) coins");

print("There are now \(Bank.coinsInBank) coins left in the bank");


playerOne = nil;

print("There are now \(Bank.coinsInBank) coins left in the bank");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章