DevPrep

Все темы › Шаблоны проектирования

Delegate, замыкание, Combine или AsyncSequence: как выбрать канал обратной связи?

Middle PRO

Суть

Делегат, замыкание, Combine и AsyncSequence решают одну задачу — объект сообщает наружу, что что-то произошло, — но отличаются по пяти осям: число получателей (один или много), число событий (одно или поток), кто владеет подпиской, как её отменить и в каком потоке придёт вызов. Выбор следует из этих осей, а не из моды: делегат не устарел, а AsyncSequence не заменяет всё.

Для единственного результата («загрузка завершилась») обычно не нужен ни один из четырёх каналов — достаточно async throws -> URL. Каналы нужны для повторяющихся событий вроде прогресса.

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

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

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

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

Скачать DevPrep в App Store