Да , по большей части.Блоки вида C-функций обрабатываются вида как объекты, которые могут захватывать переменные из окружающей области видимости.Анонимные функции эквивалентны блокам, но определенно не идентичны из-за довольно сложного механизма блоков за сценой.
Например, если вы планируете использовать блок после / вне функции / метода, который определяетблок больше не активен - это тот случай, когда вы устанавливаете блок как свойство или используете его в GCD (многоядерная библиотека очередей операций), вам нужно скопировать его с помощью Block_copy()
(или [aBlock copy]
).Я не буду вдаваться в подробности, но это определенно не то, что вы делаете с JS (анонимными) функциями.Это связано с тем, что блоки литералы размещены в стеке (а не где-то в коде), и вам нужно скопировать его в кучу, если вы хотите, чтобы он сохранялся.
Это может быть довольно сложно (но довольно красиво по своему дизайну), но для большинства случаев использования это довольно просто, и вы можете рассматривать это как анонимные функции JS.; -)