Fix Retain Cycles in SheetViewController (#6202)
* Fix retain cycle in SheetViewController.swift * Fix retain cycles
This commit is contained in:
@@ -64,11 +64,14 @@ class SheetViewController: UIViewController {
|
|||||||
|
|
||||||
func updateDetents(contentHeight: CGFloat, preventExpansion: Bool) {
|
func updateDetents(contentHeight: CGFloat, preventExpansion: Bool) {
|
||||||
if let sheet = self.sheetPresentationController {
|
if let sheet = self.sheetPresentationController {
|
||||||
sheet.animateChanges {
|
// Capture `self` weakly to prevent retain cycles.
|
||||||
self.setDetents(contentHeight: contentHeight, preventExpansion: preventExpansion)
|
// Also, capture `sheet` weakly to avoid potential strong references held by animateChanges.
|
||||||
if #available(iOS 16.0, *) {
|
sheet.animateChanges { [weak self, weak sheet] in
|
||||||
sheet.invalidateDetents()
|
guard let weakSelf = self, let weakSheet = sheet else { return }
|
||||||
}
|
weakSelf.setDetents(contentHeight: contentHeight, preventExpansion: preventExpansion)
|
||||||
|
if #available(iOS 16.0, *) {
|
||||||
|
weakSheet.invalidateDetents()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user