Возможный дубликат:
Что такое (double (^) (int)) foofoo
Я попытался найти определение в Google и SO, и я нашел примеры, в которых они используются, но не определены четко. Под «блоком» я подразумеваю символ каретки (^
). я нашел это на сайте, где cdecl они описали:
(double (^)(int, long long )) foo
как
cast foo into block(int, long long) returning double
Я никогда не видел, чтобы этот символ использовался до сегодняшнего дня. Кто-нибудь может четко описать, что такое блок, и включить в него минимальный рабочий пример? Благодарю.
Блоки являются нестандартным расширением языка C (и не только Objective-C) от Apple. Они понимают замыкания (лямбда-функции, и т. д., как бы вы их ни называли) — в основном это неименованные функциональные объекты, заключающие в себе код, который можно вызвать. Они облегчают написание, например, управляемого событиями кода, где обратные вызовы используются исчерпывающе.
Других решений пока нет …