axiom-objc-block-retain-cycles

Installation
SKILL.md

Objective-C Block Retain Cycles

Overview

Block retain cycles are the #1 cause of Objective-C memory leaks. When a block captures self and is stored on that same object (directly or indirectly through an operation/request), you create a circular reference: self → block → self. Core principle 90% of block memory leaks stem from missing or incorrectly applied weak-strong patterns, not genuine Apple framework bugs.

Red Flags — Suspect Block Retain Cycle

If you see ANY of these, suspect a block retain cycle, not something else:

  • Memory grows steadily over time during normal app use
  • UIViewController instances not deallocating (verified in Instruments)
  • Crash: "Sending message to deallocated instance" from network/async callback
  • Network requests or animations prevent view controller from closing
  • Weak reference becomes nil unexpectedly in a block
  • NSLog, NSAssert, or string formatting hiding self references
  • Completion handler fires after the view controller "should be gone"
  • FORBIDDEN Rationalizing as "It's probably normal memory usage"
    • Memory leaks are never "normal"
    • Apps should return to baseline memory after user dismisses a screen
Related skills
Installs
1
GitHub Stars
3
First Seen
Mar 5, 2026