Junior — Middle
Tudod magyarázni, milyen típusú memória szivárgások léteznek az alkalmazásokban?
sobes.tech MI
Válasz az MI-től
Az iOS alkalmazásokban a memória szivárgások fő típusai az objektumokra vonatkozó helytelen hivatkozáskezeléssel kapcsolatosak:
- Erős hivatkozási ciklusok (Strong Reference Cycles) — amikor két objektum erős hivatkozásokat tart egymásra, és egyik sem szabadulhat fel.
- Zárványok (Closures) okozta szivárgások — ha egy zárvány erősen megfogja self-et, ez ciklushoz vezethet.
- Nem felszabadított erőforrások — olyan objektumok, amelyeket nem szabadítanak fel a deinit hívásának hiánya vagy helytelen használat miatt.
Példa erős hivatkozási ciklusra:
class Person {
var apartment: Apartment?
}
class Apartment {
var tenant: Person?
}
let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // erős hivatkozási ciklus
Ennek elkerülése érdekében gyenge (weak) vagy nem tulajdonosi (unowned) hivatkozásokat használnak.