Назад к задачам
Junior — Senior
6

Обнаружение и устранение утечек памяти в асинхронных Swift‑операциях

Компании, где спрашивали:

SmartWay
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Задача состоит в том, чтобы проанализировать приведённый асинхронный Swift‑код, выявить места, где возможны утечки памяти, и внести исправления, обеспечив корректное освобождение ресурсов.

class DataProcessor {
    func process(data: String, completion: @escaping (String) -> Void) {
        DispatchQueue.global().async {
            let result = data.uppercased()
            DispatchQueue.main.async {
                completion(result)
            }
        }
    }
}

var handler: DataProcessor? = DataProcessor()
handler?.process(data: "hello") { result in
    print(result)
    handler = nil  // освобождаем объект после использования
}

В данном примере необходимо обратить внимание на захват self (или переменной‑обработчика) внутри замыкания и гарантировать, что после выполнения операции объект будет корректно деинициализирован, чтобы не оставлять висящих ссылок в памяти.