0Pricing
Swift Academy · Lesson

Retain Cycles: Causes and Detection

Identifying retain cycles between objects and closures with Instruments.

Welcome

A retain cycle occurs when two or more objects hold strong references to each other, preventing ARC from ever reaching a zero count — causing a memory leak.

Simple Two-Object Cycle

```swift class Owner { var pet: Pet? } class Pet { var owner: Owner? } var o: Owner? = Owner() var p: Pet? = Pet() o?.pet = p // Owner → Pet (strong) p?.owner = o // Pet → Owner (strong) o = nil; p = nil // Neither deinit called — cycle! ```

All lessons in this course

  1. How ARC Counts References
  2. Retain Cycles: Causes and Detection
  3. weak and unowned References
  4. Closure Capture Lists and [weak self]
← Back to Swift Academy