Combine Code Review
Quick Reference
| Issue Type | Reference |
|---|---|
| Publishers, Subjects, AnyPublisher | references/publishers.md |
| map, flatMap, combineLatest, switchToLatest | references/operators.md |
| AnyCancellable, retain cycles, [weak self] | references/memory.md |
| tryMap, catch, replaceError, Never | references/error-handling.md |
Review Checklist
- • All
sinkclosures use[weak self]when self owns cancellable - • No
assign(to:on:self)usage (useassign(to: &$property)or sink) - • All AnyCancellables stored in Set or property (not discarded)
- • Subjects exposed as
AnyPublisherviaeraseToAnyPublisher() - •
flatMapused correctly (not whenmap + switchToLatestneeded) - • Error handling inside
flatMapto keep main chain alive - •
tryMapfollowed bymapErrorto restore error types - •
receive(on: DispatchQueue.main)before UI updates - • PassthroughSubject for events, CurrentValueSubject for state
- • Future wrapped in Deferred when used with retry
When to Load References
- •Reviewing Subjects or publisher selection → publishers.md
- •Reviewing operator chains or combining publishers → operators.md
- •Reviewing subscriptions or memory issues → memory.md
- •Reviewing error handling or try* operators → error-handling.md
Review Questions
- •Are all subscriptions being retained? (Check for discarded AnyCancellables)
- •Could any sink or assign create a retain cycle with self?
- •Does flatMap need to be switchToLatest for search/autocomplete?
- •What happens when this publisher fails? (Will it kill the main chain?)
- •Are error types preserved or properly mapped after try* operators?