Sobes.tech
Back to questions
Junior — Middle
74

Можете объяснить, что означает аннотация @escaping в Swift?

Companies where asked
KTS
VKVK
ОдноклассникиОдноклассники

Answer from AI

sobes.tech AI

Аннотация @escaping в Swift используется для указания, что замыкание (closure), переданное в функцию, может быть вызвано после завершения самой функции. Это важно, когда замыкание сохраняется и вызывается асинхронно, например, в колбэках сетевых запросов.

Без @escaping замыкание считается невыходящим (non-escaping), то есть оно должно быть вызвано внутри тела функции, и не может сохраняться для вызова позже.

Пример:

func fetchData(completion: @escaping () -> Void) {
    DispatchQueue.global().async {
        // Асинхронная работа
        completion() // вызов замыкания после выхода из функции
    }
}

Здесь completion помечено как @escaping, потому что вызывается асинхронно после выхода из fetchData.