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ń.