Strong reference cycles
A strong reference cycle is when two instances directly or indirectly hold strong references to each other. This means that neither object can ever be deleted because both ensure that the other always exists.
This scenario is our first really bad memory management scenario. It is one thing to keep around memory longer than it is needed, but it is a whole different level to create memory that can never be freed up to be reused again. This type of memory problem is called a memory leak because the computer slowly leaks memory until there is no longer new memory available. This is why you will sometimes see a speed improvement after you restart your device. Upon restarting, all of the memory is freed up again. Modern operating systems sometimes find ways to forcefully free up memory; especially, when they completely quit an app, but we cannot rely on this as programmers.
So, how can we prevent these strong reference cycles? First, let's look at what they look like. There...