Отмена в Swift кооперативная: сама ничего не остановит 🎲

❗️Отмена задачи — это просто флаг. Если код его не проверяет, работа доедет до конца, и вызывающая сторона будет ждать каждый последний байт.

✅ Что делать: сыпать try Task.checkCancellation() в циклах и после сетевых шагов, чистить ресурсы через withTaskCancellationHandler, брать Task.sleep(for:) — он сам бросает при отмене.

⛔️ Чего не делать: длинные циклы и пайплайны декодинга без единой проверки, утечки буферов и временных файлов при отмене, CancellationError под собственные таймауты — он значит «нас отменили», а не «мы не дождались».

💡 Если делаете таймаут на TaskGroup, то group.cancelAll() там — несущая конструкция, а не гигиена. Просто вернуться из тела недостаточно: группа дождётся оставшихся дочерних задач, но не отменит их, и таймаут на секунду превратится в ожидание проигравшей задачи.

#Swift #SwiftLang #iOS #SwiftConcurrency #Cancellation

Отмена в Swift кооперативная: сама ничего не остановит 🎲 | Сетка — социальная сеть от hh.ru