I have never worked on non ARC based project. I just came across a zombie on my ARC based project. I found it was because of retain cycle.I am just wondering what is a retain cycle.Can
Could you give me an example for retain cycle?
I have never worked on non ARC based project. I just came across a zombie on my ARC based project. I found it was because of retain cycle.I am just wondering what is a retain cycle.Can
Could you give me an example for retain cycle?
Here's what a retain cycle is: When 2 objects keep a reference to each other and are retained, it creates a retain cycle since both objects try to retain each other, making it impossible to release.
To avoid retain cycles with ARC, simply declare one of them with a
weak
reference, like so:This is swift, but here's an interactive demo of retain cycles in iOS: https://github.com/nickm01/RetainCycleLoggerExample
A retain cycle is a situation when object
A
retains objectB
, and objectB
retains objectA
at the same time*. Here is an example:You can fix a retain cycle in ARC by using
__weak
variables orweak
properties for your "back links", i.e. links to direct or indirect parents in an object hierarchy:* This is the most primitive form of a retain cycle; there may be a long chain of objects that retain each other in a circle.