Retain cycles can occur in languages like Objective-C where memory management
is based on retain count. Objects are created with a retain count of 1. Other objects
can retain the object, which increments the retain count, or release it, which
decrements the retain count. If an object’s retain count ever reaches 0, the runtime
deallocates it. It’s only then that the object’s dealloc method is called. Read More.