Junior — Middle
Hogyan szabadul fel a memória, amit egy objektum foglal el egy programban?
sobes.tech MI
Válasz az MI-től
iOS-ben a memória felszabadítása főként automatikusan történik a ARC (Automatic Reference Counting) rendszer segítségével. Minden objektumnak van egy hivatkozásszámlálója, amely növekszik új erős hivatkozás létrehozásakor, és csökken, amikor az eltávolításra kerül. Amikor a számláló eléri a nullát, az objektum automatikusan megsemmisül, és a memória felszabadul.
Ha a kódban ciklikus hivatkozások fordulnak elő (például két objektum erős hivatkozásokkal egymásra), akkor a memória nem szabadul fel. Ennek megoldására gyenge (weak) vagy tulajdon nélküli (unowned) hivatkozásokat használnak.
Példa:
class Person {
var name: String
weak var apartment: Apartment? // gyenge hivatkozás a ciklus elkerülése érdekében
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
unowned let tenant: Person // tulajdon nélküli hivatkozás
init(unit: String, tenant: Person) {
self.unit = unit
self.tenant = tenant
}
}
Így, ha a hivatkozásokat helyesen kezelik, a memória automatikusan felszabadul.