Login Sign Up
Advert
Your ad spot
Reserve this exclusive slot for the selected period.
Buy advertising →
Telegram community logo - Затишна Галера
Added 06 Jan 2025

Затишна Галера

@Zatishna_Galera
Number of subscribers: 2 704
Photos: 1,360
Videos: 432
Links: 1,830
Description:
Голова Одеського центру розробки DataArt та Delivery Director, капітан Затишної Галери, ділитимуся: завданнями із співбесід (QA/Delivery/Management), статтями, вакансіями, новинами зі світу IT. Контакт: [email protected] ; Patreon: patreon.com/CozyGalley
Source

Затишна Галера | iOSКомпас 🧭1️⃣3️⃣4️⃣ Завдання 134Чим небезпечна утечка пам’яті?Доброго...

Telegram community logo - Затишна Галера Затишна Галера @Zatishna_Galera
789 Views/Reach 2025-12-24 12:45 Message №2303
#iOSКомпас 🧭1️⃣3️⃣4️⃣ Завдання 134Чим небезпечна утечка пам’яті?Доброго здровля мої любі друзі. З вами ваш незмінний ios розробник Сергій з @badlinkschannel. 🤔 Утечка пам’яті (memory leak) - це ситуація, коли пам’ять залишається виділеною, але програма вже не може отримати до неї доступ і не звільняє її. Такі утечки поступово збільшують споживання пам’яті, що може призвести до деградації продуктивності або краху застосунку.class Person { var pet: Pet? deinit { print("Person видалений") }}class Pet { var owner: Person? deinit { print("Pet видалений") }}var person: Person? = Person()var pet: Pet? = Pet()person?.pet = petpet?.owner = personperson = nilpet = nil 🔣 Як уникнути утечок пам’яті?🔣 Використовувати weak або unowned посиланняweak та unowned не утримують об’єкт, тому не створюють циклу посилань.class Person { var pet: Pet? deinit { print("Person видалений") }}class Pet { weak var owner: Person? deinit { print("Pet видалений") }} 🔣 unowned використовують тоді, коли об’єкт гарантовано існуватиме протягом усього часу життя того, хто на нього посилається.class Owner { var car: Car? deinit { print("Owner видалений") }}class Car { unowned var owner: Owner init(owner: Owner) { self.owner = owner } deinit { print("Car видалений") }} 🔣 Розривати цикли в замиканнях ([weak self])Замикання можуть утримувати self, якщо їх зберігає сам клас.class ViewController { var closure: (() -> Void)? func setup() { closure = { [weak self] in print(self as Any) } } deinit { print("ViewController видалений") }} 🔣 Як знайти утечки пам’яті? Використовувати Instruments Leaks Перевіряти виклик deinit Досліджувати Memory Graph у Xcode з Malloc Stack Logging#️⃣ Такий підхід дозволяє виявляти цикли посилань і контролювати життєвий цикл об’єктів у Swift.@Zatishna_Galera