So Swift does most of the memory management for us, Awesome! Does that mean we as developers don’t have to think about memory management anymore? The answer is no, because with ARC we always have to be careful not to create any strong reference cycles. You create a strong reference cycle when two instances of a class both hold strong references to each other. Because in this situation the reference count of those objects will never get to zero they will hold each other in memory until the application terminates. This is called a memory leak. Strong reference cycles are not always easy to find but a common pitfall is working with closures. This is best illustrated with an example.