Explaining weak and strong variables is better with an example. Let’s start with two classes Driver and Car. Don’t use Playgrounds to test this code. deinit doesn’t get called in playgrounds Run the code, you should see the class getting initialized, but never getting de-initialized. Let’s dig into why this is not happening. In ViewDidLoad,