I would like to perform some cleanup at the end of a view controller's life, namely to remove an NSNotificationCenter
notification. Implementing dealloc
results in a Swift compiler error:
Cannot override 'dealloc' which has been marked unavailable
What is the preferred way to perform some cleanup at the end of an object's life in Swift?
deinit {
// perform the deinitialization
}
From the Swift Documentation:
A deinitializer is called immediately before a class instance is deallocated. You write deinitializers with the deinit keyword, similar to how intializers are written with the init keyword. Deinitializers are only available on class types.
Typically you don’t need to perform manual clean-up when your instances are deallocated. However, when you are working with your own resources, you might need to perform some additional clean-up yourself. For example, if you create a custom class to open a file and write some data to it, you might need to close the file before the class instance is deallocated.