Sobes.tech
Junior — Middle

Czy możesz wyjaśnić, jakie rodzaje wycieków pamięci występują w aplikacjach?

sobes.tech AI

Odpowiedź od AI

W aplikacjach iOS główne typy wycieków pamięci związane są z niewłaściwym zarządzaniem odwołaniami do obiektów:

  • Silne cykle odwołań (Strong Reference Cycles) — gdy dwa obiekty mają silne odwołania do siebie i żaden z nich nie może zostać zwolniony.
  • Wyciek spowodowany przez zamknięcia (Closures) — jeśli zamknięcie przechwytuje self silnym odwołaniem, może to prowadzić do cyklu odwołań.
  • Niezwolnione zasoby — obiekty, które nie są zwalniane z powodu braku wywołania deinit lub niewłaściwego użycia.

Przykład silnego cyklu odwołań:

class Person {
    var apartment: Apartment?
}

class Apartment {
    var tenant: Person?
}

let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // silny cykl odwołań

Aby tego uniknąć, używa się słabych (weak) lub nieuniwersalnych (unowned) odwołań.