I came across a function called deinit()
while reading The Swift Programming Language guide, but I'm still wondering why and when we need to implement it since we don't really need to manage memory.
Before a class instance needs to be deallocated 'deinitializer' has to be called to deallocate the memory space. The keyword 'deinit' is used to deallocate the memory spaces occupied by the system resources.
Deinitialization is a process to deallocate class instances when they're no longer needed. This frees up the memory space occupied by the system. We use the deinit keyword to create a deinitializer.
A deinit() is called immediately before a class instance is deallocated, and it is helpful when you are working with your own resources. For example, if you create a custom class to open a file and write some data to it, you might need close the file before the class instance is deallocated.
So the deinit is not called if there is no additional scope.
It's not required that you implement that method, but you can use it if you need to do some action or cleanup before deallocating the object.
The Apple docs include an example:
struct Bank { static var coinsInBank = 10_000 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 { Bank.receiveCoins(coinsInPurse) } }
So whenever the player is removed from the game, its coins are returned to the bank.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With