Как отменить запрос в URLSession?
Суть
У любой URLSessionTask есть cancel(): передача прерывается, а в completion-замыкание или делегат приходит ошибка URLError.cancelled (NSURLErrorCancelled, код −999). Отмена асинхронна — после cancel() колбэк всё равно будет вызван, один раз, с этой ошибкой. Для download-задач есть cancel(byProducingResumeData:), чтобы потом докачать.
Всю сессию целиком гасят invalidateAndCancel() (отменить всё) или finishTasksAndInvalidate() (дать доделать текущие); после этого сессию использовать нельзя.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep