What does the caret in objective C mean?
ie.
void (^handler)(NSInteger);
from Mac Dev Center
The caret symbol creates a block, which is similar to a delegate. It's a type of closure—a function defined inline that also has access to variables in the parent scope, which can often be used to greatly simplify certain types of delegate-/callback-oriented code.
It depends on the context. In the example you show, it's used to denote a Block. The caret symbol is also the bitwise XOR operator in C-based languages — that's what most programmers would identify it as, so it's good to understand that it can be both depending on where it appears, much like *
, etc.
And while we're suggesting references, one simply has to include Apple's official Blocks reference.
The caret represents a block or a closure which carries around or contains the lexical scope. They are similar to blocks in ruby. An excellent reference can be found here.
Like ennuikiller said, it indicates a block. If you want to learn more, Ars Technica had an excellent in-depth review of Snow Leopard that described not only blocks and closures, but also Grand Central Dispatch and all the other new technologies in Mac OS X 10.6. Highly recommended.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With