Что такое замыкание и что значит @escaping?
Суть
Замыкание — самодостаточный блок кода, который можно передать как значение и который захватывает переменные из окружающего контекста. Функции и методы — тоже замыкания. Захват по умолчанию идёт по ссылке: замыкание видит актуальное значение переменной, а не копию на момент создания; capture list [x] делает копию.
var counter = 0
let byReference = { counter } // захват переменной (по ссылке)
let byValue = { [counter] in counter } // capture list: копия в момент создания
counter = 5
print(byReference(), byValue()) // 5 0
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep