В iOS-программировании (Swift/Objective-C) замыкания (closures) — это блоки кода, которые можно передавать и использовать как объекты.
Можешь назвать основные типы замыканий, используемых в программировании?
В iOS-программировании (Swift/Objective-C) замыкания (closures) — это блоки кода, которые можно передавать и использовать как объекты.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В iOS-программировании (Swift/Objective-C) замыкания (closures) — это блоки кода, которые можно передавать и использовать как объекты.
Основные типы замыканий:
- Escaping closures — замыкания, которые могут быть вызваны после выхода из функции, в которую они были переданы. Например, асинхронные операции.
- Non-escaping closures — замыкания, которые вызываются внутри функции и не сохраняются для последующего использования.
- Autoclosures — замыкания, которые автоматически создаются компилятором для отложенного вычисления выражений, часто используются для оптимизации.
Пример escaping closure в Swift:
func fetchData(completion: @escaping (String) -> Void) {
DispatchQueue.global().async {
// имитация загрузки данных
let data = "Данные загружены"
completion(data)
}
}
fetchData { result in
print(result)
}
Здесь completion — escaping closure, так как вызывается асинхронно после выхода из функции.