> В каком порядке вызываются defer блоки в Swift (iOS, Swift)

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

Компании: nuum

Стек: iOS, Swift

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

В Swift блоки defer вызываются в порядке, обратном их объявлению - то есть по принципу LIFO (Last In, First Out). Это означает, что последний объявленный defer выполнится первым, а первый - последним. Например:

SWIFT
func example() {
defer { print("Первый defer") }
defer { print("Второй defer") }
defer { print("Третий defer") }
}
// Вывод: Третий defer, Второй defer, Первый defer

Такое поведение обусловлено тем, что defer часто используется для освобождения ресурсов или отката изменений в обратном порядке их создания. Важно помнить, что defer выполняется при выходе из текущей области видимости (функции, цикла, условного блока), независимо от того, произошёл ли выход нормально или через исключение.

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

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