> Что означает ошибка компиляции при отсутствии атрибута escaping? (iOS, Swift)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: FullStack

Стек: iOS, Swift

> Пример ответа

Ошибка компиляции при отсутствии атрибута @escaping в Swift возникает, когда замыкание (closure) передаётся в функцию, но может быть вызвано после завершения этой функции. Компилятор требует явно указать @escaping, чтобы разработчик осознанно подтвердил, что замыкание будет сохранено и выполнено позже (например, в асинхронном колбэке или хранится в свойстве). Без этого атрибута замыкание считается неescaping (неубегающим) - оно выполняется синхронно внутри тела функции, и компилятор оптимизирует управление памятью, не требуя явного self для захвата переменных. Если же замыкание убегает, но @escaping не указан, компилятор выдаёт ошибку: "Closure parameter is non-escaping but may escape". Это защищает от случайных утечек памяти и неправильного захвата ссылок.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью