The ReactiveCocoa framework makes use of weakify
and strongify
macros, both of which are preceded by an '@' symbol.
Here's an example (From this file).
- (RACSignal *)rac_textSignal {
@weakify(self);
return [[[[RACSignal
...
];
}
What is the significance of the at symbol that is a prefix to the macro name? (NOTE: I have checked the macro, and it is called 'weakify', not '@weakify', so it isn't just the macro name!).
The macro itself is defined here:
https://github.com/jspahrsummers/libextobjc/blob/master/extobjc/EXTScope.h#L45
There is no special meaning to macros starting with an @
. This is done in libextobjc to make the @weakify
and @strongify
macros seem more idiomatic with the rest of the language.
Technically, the @
is not part of the macro. The macro is just weakify
or strongify
. The actual body of the macro, though, is written such that it will not compile unless preceded with an @
. This is done by adding an empty @autoreleasepool {}
at the beginning of the macro, but stripping off the leading @
.