Junior — Middle
Kokiose situacijose naudojama silpna nuoroda į objektą?
sobes.tech AI
Atsakymas iš AI
iOS'e silpna nuoroda (weak reference) naudojama siekiant išvengti stiprių nuorodų ciklų (retain cycles), kurie gali sukelti atminties nutekėjimą. Ji nepadidina objekto nuorodų skaitiklio, todėl objektas gali būti atlaisvintas net ir turint silpnų nuorodų į jį.
Tipinės silpnų nuorodų naudojimo situacijos:
- Delegatai: dažnai deklaruojami kaip
weak, kad išvengtų ciklo tarp objekto ir jo delegato. - Uždarymai (closures): jei uždarymas užfiksuoja
self, siekiant išvengti ciklo,selfužfiksuojamas su[weak self]. - Ryšiai tarp objektų, kur vienas objektas valdo kitą, o kitas turi nuorodą be nuosavybės.
Pavyzdys su delegatu:
protocol SomeDelegate: AnyObject {
func didUpdate()
}
class SomeClass {
weak var delegate: SomeDelegate?
}
Taip silpna nuoroda padeda valdyti atmintį ir išvengti nutekėjimų.