Swift: Reference to property 'x' in closure requires explicit use of 'self' to make capture semantics explicit
In an escaping closure inside a class, Swift requires self. to make the capture (and potential retain cycle) visible.
Seen on:
iOS
Meaning
Add self. or capture [weak self] / [self] explicitly. For long-lived closures prefer [weak self] to avoid retain cycles.
Common causes
- Escaping closure referencing instance properties without self
- Copying code from SwiftUI structs into classes
⚡ Quick fix
- Write self.property
- Use [weak self] and guard let self
- Use [self] capture list when a strong capture is intended
Detailed fix by platform
Swift
- swift
api.load { [weak self] result in guard let self else { return } self.items = result }
How to diagnose
- Closure — Escaping and long-lived?
- Cycle — Does self own the closure?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
Most viewed in iOS
Other ways to find it
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
Was this page helpful?
Report a correction or suggest an improvement
Last updated 7 Oct 2026