text: A retain cycle is a situation when object A retains object B, and object B
  retains object A at the same time. Here is an example:
  
  ```objectivec
  @class Child;
  @interface Parent : NSObject {
      Child *child; // Instance variables are implicitly __strong
  }
  @end
  @interface Child : NSObject {
      Parent *parent;
  }
  @end
  ```
  
  You can fix a retain cycle in ARC by using \_\_weak variables or weak properties
  for your "back links", i.e. links to direct or indirect parents in an object
  hierarchy:
  
  ```objectivec
  @class Child;
  @interface Parent : NSObject {
      Child *child;
  }
  @end
  @interface Child : NSObject {
      __weak Parent *parent;
  }
  @end
  ```
  