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) референции.