Junior — Middle
Можете ли објаснити шта значи коришћење слабог референце на self у затварачу?
sobes.tech АИ
Одговор од АИ
Korišćenje slabe reference (weak reference) na self u zatvaranjima u iOS (Swift) pomaže da se izbegnu ciklusi zadržavanja (retain cycles), koji dovode do curenja memorije. Kada zatvaranje uhvati self kao snažnu referencu, a self sadrži to zatvaranje, oni se međusobno drže, i memorija se ne oslobađa.
Primer:
class MyClass {
var closure: (() -> Void)?
func setup() {
closure = { [weak self] in
guard let self = self else { return }
self.doSomething()
}
}
func doSomething() {
print("Action")
}
}
Ovde [weak self] znači da će self unutar zatvaranja biti slaba referenca, i ako objekat bude uništen, referenca će postati nil, čime se sprečava curenje memorije.