Что такое defer?
Суть
defer { ... } — блок, который выполняется при любом выходе из текущей области видимости: обычный конец блока, return, throw, break, continue. Нужен для гарантированной очистки: закрыть файл, снять lock, завершить beginBackgroundTask, сбросить флаг isLoading.
func process() throws {
print("open")
defer { print("close 1") }
defer { print("close 2") }
print("work")
}
try process()
// open
// work
// close 2
// close 1
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep