@escaping означает, что closure может быть сохранён и вызван после возврата из функции; без атрибута — non-escaping (живёт только на время вызова).
Разбор
- Нужен для async колбэков, хранения в свойствах, Dispatch.
- Escaping сильнее влияет на capture: часто нужен
self. явно.
- Non-escaping позволяет компилятору оптимизировать и упрощает lifetime.
- Completion handler почти всегда
@escaping.
Пример
func load(completion: @escaping (Data) -> Void) { ... }
Итог
@escaping фиксирует lifetime колбэка за пределами стека вызова.