Junior — Middle
Кога е подходящо да използвате слаба препратка с 'weak let'?
sobes.tech AI
Отговор от AI
Слабка препратка с помощта на weak let в Swift се използва за предотвратяване на цикли от силни препратки (retain cycles), особено в closures и делегати. Тя е подходяща, когато обектът, към който се отнася, може да бъде деинициализиран, и не искате да го държите в паметта.
Например, в closure, който улавя self, за да избегнете изтичане на памет, се използва слаба препратка:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = { [weak self] in
guard let self = self else { return }
self.doSomething()
}
}
func doSomething() {
print("Действие")
}
}
Тук weak предотвратява задържането на self от closure, което позволява ViewController да бъде освободен от паметта, когато вече не е необходим.