Iniciar sesión Registro
Anuncios
Tu espacio publicitario
Reserva este slot exclusivo para el periodo elegido.
Comprar publicidad →
Logotipo de la comunidad de telegram - Затишна Галера
Añadido 06 ene. 2025

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

@Zatishna_Galera
Número de suscriptores: 2 709
Fotos: 1,350
Videos: 431
Enlaces: 1,830
Descripción:
Голова Одеського центру розробки DataArt та Delivery Director, капітан Затишної Галери, ділитимуся: завданнями із співбесід (QA/Delivery/Management), статтями, вакансіями, новинами зі світу IT. Контакт: [email protected] ; Patreon: patreon.com/CozyGalley
Fuente

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

Logotipo de la comunidad de telegram - Затишна Галера Затишна Галера @Zatishna_Galera
789 Vistas/Alcance 2025-12-24 12:45 Mensaje №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