The ReactiveCocoa framework makes use of weakify
and strongify
macros, both of which are preceded by an \'@\' symbol.
Here\'s an example (From
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 @
.
The @
isn't part of the macro. weakify
is defined as:
#define weakify(...) \
autoreleasepool {} \
metamacro_foreach_cxt(ext_weakify_,, __weak, __VA_ARGS__)
So @weakify(self)
becomes:
@autorelease {} metamacro_foreach_cxt(ext_weakify_,, __weak, self)