Sobes.tech
Junior — Middle

Можеш ли да обясниш какви видове течове на памет съществуват в приложенията?

sobes.tech AI

Отговор от AI

В приложенията за iOS основните типове течове на памет са свързани с неправилно управление на референциите към обекти:

  • Силни цикли на задържане (Strong Reference Cycles) — когато два обекта имат силни референции един към друг и никой не може да бъде освободен.
  • Течове поради затваряния (Closures) — ако затваряне захваща self с силна референция, това може да доведе до цикъл на задържане.
  • Несвободени ресурси — обекти, които не се освобождават поради липса на извикване на deinit или неправилна употреба.

Пример за силен цикъл на задържане:

class Person {
    var apartment: Apartment?
}

class Apartment {
    var tenant: Person?
}

let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // силен цикъл на задържане

За да се избегне това, се използват слаби (weak) или неуниверсални (unowned) референции.