Junior — Middle
Milyen helyzetekben használunk gyenge hivatkozást egy objektumra?
sobes.tech MI
Válasz az MI-től
iOS-ben a gyenge hivatkozás (weak reference) a erős hivatkozási ciklusok (retain cycles) megelőzésére szolgál, amelyek memória szivárgáshoz vezethetnek. Nem növeli a hivatkozás számlálót az objektumon, így az objektum felszabadítható, még akkor is, ha vannak gyenge hivatkozások rá.
A gyenge hivatkozások tipikus használati helyei:
- Delegáltak: gyakran
weak-ként vannak deklarálva, hogy elkerüljék a ciklust az objektum és delegáltja között. - Closure-k: ha egy closure elfogja
self-et, a ciklus elkerülése érdekében[weak self]-tel fogják el. - Objektumok közötti kapcsolatok, ahol egy objektum másikat birtokol, és a másiknak hivatkozása van anélkül, hogy birtokolná.
Példa delegáttal:
protocol SomeDelegate: AnyObject {
func didUpdate()
}
class SomeClass {
weak var delegate: SomeDelegate?
}
Így a gyenge hivatkozás segít a memória kezelésében és a szivárgások megelőzésében.