AGENT SKILL

swift-memory-management

Standards for ARC, Weak/Unowned References, and Capture Lists. Use when managing Swift ARC, avoiding retain cycles, or configuring capture lists in closures. (triggers: **/*.swift, weak, unowned, capture, deinit, retain)

License 许可
MIT
最近更新
2026-06-24
Stars
★ 67
Forks
24

01 前言 Front Matter

name
swift-memory-management
description
Standards for ARC, Weak/Unowned References, and Capture Lists. Use when managing Swift ARC, avoiding retain cycles, or configuring capture lists in closures. (triggers: **/*.swift, weak, unowned, capture, deinit, retain)

02 资源文件 1

03 SKILL.md 正文

Swift Memory Management

Priority: P0

Implementation Guidelines

ARC Fundamentals

  • Default: Strong references. Swift automatically manages retain/release.
  • Weak: Use weak if the reference can become nil during its lifetime (delegates, optional parent refs).
  • Unowned: Use unowned if the reference is guaranteed to outlive the referring object (rare; prefer weak).

Capture Lists

  • Closures: Place [weak self] at the beginning of the closure's capture list. Pattern: { [weak self] in guard let self = self else { return } }.
  • Self in Structs: No capture list needed (self is copied by value).
  • Multiple Captures: [weak self, weak delegate].

Retain Cycles

  • Delegates: Always weak var delegate. The delegate protocol should inherit from AnyObject (e.g., protocol MyDelegate: AnyObject {}).
  • Closures as Properties: Use weak or unowned in capture list.
  • two-way References: One side must be weak.

Anti-Patterns

  • No strong var delegate: Use weak.
  • No self in escaping closures: Use [weak self].
  • No unowned unless certain: Default to weak to prevent crashes.

References

04 同仓库更多 Skills