Ответ 1
Это блок C. Это совсем как анонимная функция (используется, а не в структуре). Вы можете узнать больше о них на сайте Mike Ash и в документации Apple.
Глядя на эту страницу: http://www.mikeash.com/pyblog/friday-qa-2010-12-31-c-macro-tips-and-tricks.html
Я нашел этот фрагмент кода с синтаксисом ^{
... }()
, что делают каретки/скобки?
#define MAX(x, y) (^{ \
int my_localx = (x); \
int my_localy = (y); \
return my_localx > my_localy ? (my_localx) : (my_localy); \
}())
Похоже, что он создает анонимную функцию или что-то в этом роде. Что называется этой концепцией? Где я могу прочитать об этом?
Это блок C. Это совсем как анонимная функция (используется, а не в структуре). Вы можете узнать больше о них на сайте Mike Ash и в документации Apple.
Это блок. Это не стандартный C, но он поддерживается компилятором Apple LLVM (около Xcode 3.2 IIRC и более поздних). Подробнее см. здесь и здесь.
Это не только для Objective-C, но также является частью компиляторов C и С++.
Это блок C, который создаст анонимную функцию.
Обратите внимание, что он будет создавать вызовы системному API для обработки этих вызовов, не знаю о mac, но для iOS для поддержки этих вызовов система исполнения должна быть 3.2 или новее.