DevPrep

Все темы › Сетевое программирование и API

Как отменить запрос в URLSession?

Middle PRO

Суть

У любой URLSessionTask есть cancel(): передача прерывается, а в completion-замыкание или делегат приходит ошибка URLError.cancelled (NSURLErrorCancelled, код −999). Отмена асинхронна — после cancel() колбэк всё равно будет вызван, один раз, с этой ошибкой. Для download-задач есть cancel(byProducingResumeData:), чтобы потом докачать.

Всю сессию целиком гасят invalidateAndCancel() (отменить всё) или finishTasksAndInvalidate() (дать доделать текущие); после этого сессию использовать нельзя.

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store