Sobes.tech
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.