GCD (Grand Central Dispatch) — механизм управления задачами в iOS/macOS. Синхронные задачи (sync): поток, который вызвал задачу, блокируется до момента её завершения. Операции выполняются последовательно, поэтому…
имею опыт unit-тестирования бизнес-логики проверял основные сценарии работы и пограничные случаи применял мок-объекты, чтобы изолировать зависимости создавал тесты с акцентом на поведение функций и валидность данных…
Механизм управления памятью Swift для объектов классов Отслеживает число активных ссылок на объект — счетчик ссылок При добавлении ссылки счётчик увеличивается на 1, при её удалении — уменьшается на 1 После достижения…
динамический массив, использующий динамическое выделение памяти перед добавлением проверяется наличие свободной ёмкости если свободного места недостаточно — резервируется дополнительная память (примерно в 2 раза…
Модульная структура приложения с SPM SPM представляет собой официальный менеджер пакетов Swift модули создаются в виде отдельных пакетов, каждый из которых содержит собственный Package.swift в состав пакетов могут…
Чем отличаются Array, Set и Dictionary Все три типа предназначены для хранения коллекций данных Array — индексированный упорядоченный список, в котором разрешены дубликаты Set — неупорядоченная коллекция уникальных…
Рефакторинг: изменение имени поля в таблице БД проанализировать зависимости: найти использование поля в приложении и базе данных — в запросах, индексах и триггерах подготовить миграцию: создать скрипт изменения схемы…
Как проверять асинхронный код? Ожидать завершения асинхронных операций с помощью await, callbacks или promises. Изолировать сетевые обращения, применяя моки и стабы. Проверять последовательные состояния: запуск,…
последовательная очередь обрабатывается в одном потоке, поэтому порядок операций имеет значение deadlock появляется, когда ресурсы взаимно блокируют друг друга для профилактики сокращают пересечения блокировок и…
механизм выбора и вызова функций в runtime (во время выполнения) статическая (early) — компилятор заранее определяет прямой вызов динамическая (late) — реализация метода выбирается во время исполнения с учётом типа…
Как работают DispatchGroup и DispatchSemaphore? Concurrency primitives для iOS/macOS в GCD DispatchGroup — средство координации асинхронных задач помогает отследить завершение всех операций, входящих в группу…
Как распознать цикл сильных ссылок и предотвратить утечку памяти? управление памятью и работа сборщика мусора цикл сильных ссылок возникает, когда объекты напрямую удерживают ссылки друг на друга GC не освобождает…