Junior — Middle
Hol és hogyan valósulnak meg a gyenge hivatkozások a memóriakezelő rendszerekben?
sobes.tech MI
Válasz az MI-től
Az iOS-ben a gyenge hivatkozások (weak references) az automatikus hivatkozásszámítás (ARC) memóriakezelő rendszer szintjén valósulnak meg. Ezeket a erős hivatkozási ciklusok megelőzésére használják, amelyek memória szivárgáshoz vezethetnek.
Egy gyenge hivatkozás nem növeli a objektum hivatkozásszámát, így az objektum felszabadítható, még akkor is, ha vannak rá gyenge hivatkozások. Az objektum felszabadítása után a gyenge hivatkozások automatikusan nil értékre változnak.
Implementáció:
- Objective-C-ben és Swift-ben a gyenge hivatkozásokat a
__weak(Objective-C) vagyweak(Swift) kulcsszóval lehet deklarálni. - ARC követi az erős és gyenge hivatkozásokat, és felszabadítja az objektumot, amikor már nincs erős hivatkozás.
Swift példával:
class Person {
weak var delegate: SomeDelegate? // gyenge hivatkozás
}
Így a gyenge hivatkozások a fordítóban és futásidőben az ARC által kerülnek megvalósításra, biztosítva az automatikus memória kezelést ciklikus objektum tartás nélkül.