Как работают блоки и зачем нужен __block?
Суть
Блок (^{ ... }) — замыкание в Objective-C: объект (его isa — один из классов блоков), который содержит указатель на функцию и копии захваченных переменных. Блок можно хранить, передавать и вызывать позже.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep