Use `weak` when the reference may become `nil` while the referring object exists. It is optional and safe: ```swift protocol MyDelegate: AnyObject {} weak var delegate: MyDelegate? ``` Use `unowned` only when the referenced object is guaranteed to outlive the referring object. It is non-optional, but accessing it after deallocation crashes. This is rare; prefer `weak` unless the lifetime guarantee is certain. For escaping closures that could create a retain cycle, put the capture at the begin...
Scanned 9/5/2026
Install to Claude Code
npx -y skills add HoangNguyen0403/agent-skills-standard --skill swift-memory-management --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Swift Memory Management?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-swift-memory-management-427916cf)More formats (shields.io, HTML) on the badges page.
Use `weak` when the reference may become `nil` while the referring object exists. It is optional and safe:
```swift
protocol MyDelegate: AnyObject {}
weak var delegate: MyDelegate?
```
Use `unowned` only when the referenced object is guaranteed to outlive the referring object. It is non-optional, but accessing it after deallocation crashes. This is rare; prefer `weak` unless the lifetime guarantee is certain.
For escaping closures that could create a retain cycle, put the capture at the beginning of the closure’s capture list:
```swift
someOperation { [weak self] in
guard let self = self else { return }
self.updateUI()
}
```
Use `[unowned self]` only when the closure cannot run after `self` is deallocated:
```swift
someOperation { [unowned self] in
self.updateUI()
}
```
Rule of thumb: `weak` if it can become `nil`; `unowned` if it is guaranteed to remain alive.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!