Хорошо, после некоторого осмотра я нашел какие-то указатели на ответы (не каламбур).Спецификация языка блоков clang утверждает это в отношении расширений Objective-C
Objective-C расширяет определение ссылочного типа блока так же, как и для id.Переменная или выражение типа Block может передаваться сообщением или использоваться в качестве параметра, где бы ни находился идентификатор.Обратное также верно.Таким образом, ссылки на блоки могут отображаться как свойства и подчиняться логике атрибутов присваивания, сохранения и копирования, которая зарезервирована для объектов.
Все блоки конструируются как объекты Objective-C независимо от того, является ли объект Objective-C время выполнения работает в программе или нет.Блоки, использующие автоматическую (стековую) память, являются объектами и могут передаваться по сообщениям, хотя они могут не назначаться в __слабые местоположения, если включена сборка мусора.
Хотя я до сих пор не уверен,среда выполнения блоков обрабатывает Objective C и C одинаково (создавая объекты Objective C, даже если компилируется чистый C), и если предложенное Apple расширение до C стремится разрешить использование блоков в C / C ++ без созданияобъективных объектов C.Комментарии приветствуются.