Если использовать DispatchQueue с WorkItem и вызвать cancel() — когда и как происходит отмена?

Да, в iOS возможна отмена выполнения задачи, если задача поддерживает отмену. Например, при использовании URLSessionDataTask можно вызвать метод cancel(), чтобы остановить загрузку.

Короткий ответ

Что ответить на собеседовании

Да, в iOS возможна отмена выполнения задачи, если задача поддерживает отмену. Например, при использовании URLSessionDataTask можно вызвать метод cancel(), чтобы остановить загрузку.

Подробный разбор

Ответ с пояснениями

Да, в iOS возможна отмена выполнения задачи, если задача поддерживает отмену. Например, при использовании URLSessionDataTask можно вызвать метод cancel(), чтобы остановить загрузку.

В многопоточности с использованием Operation и OperationQueue можно вызвать cancel() у операции, чтобы отметить её как отменённую. Важно, чтобы сама операция проверяла состояние отмены и корректно завершалась.

Пример с URLSession:

let task = URLSession.shared.dataTask(with: url) { data, response, error in
    // обработка результата
}
task.resume()
// Позже, если нужно отменить:
task.cancel()

Таким образом, отмена возможна, но зависит от конкретного API и реализации задачи.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее