How do retain cycles happen in Swift closures and delegates, and how would you find one in an app that is slowly leaking memory?
A closure or delegate reference that captures its owner strongly, while the owner also holds that closure or delegate strongly, forms a cycle ARC cannot break on its own, and the fix is weak or unowned capture chosen by lifetime, not by habit. Use this IOS answer to show the decision, trade-off, and evidence rather than a memorised definition.