Junior — Middle
Zašto se preporučuje korišćenje slabe reference na sebe (weak self) u kodu koji koristi zatvarače?
sobes.tech АИ
Одговор од АИ
Korišćenje slabe reference (weak self) u zatvaranjima je neophodno za sprečavanje ciklusa jakih referenci (retain cycles), koji dovode do curenja memorije.
Kada zatvaranje uhvati self kao slabu referencu, a self sadrži to zatvaranje (npr. u svojstvu), oni se drže međusobno, i nijedan od objekata se ne oslobađa.
Primer korišćenja slabe reference:
someAsyncCall { [weak self] in
guard let self = self else { return }
self.doSomething()
}
Ovde je self uhvaćen slabo, tako da ako objekat self bude uništen pre izvršenja zatvaranja, ono ga neće držati u memoriji, čime se sprečava curenje.