如何在Objective-C宏中使用商业广告?
我知道不推荐,但似乎有可能以某种方式?由于libextobjc提供@weakify,@strongify等...
@weakify如何在幕后工作?使用@weakify(self)的想法是让它作为一个简写:
__weak __typeof__(self) weakSelf = self;
Run Code Online (Sandbox Code Playgroud)
注意:@weakify宏在这里定义.
我试图通过收集它使用的所有宏来了解它是如何工作的:
#define weakify(...) \
ext_keywordify \
metamacro_foreach_cxt(ext_weakify_,, __weak, __VA_ARGS__)
#define ext_weakify_(INDEX, CONTEXT, VAR) \
CONTEXT __typeof__(VAR) metamacro_concat(VAR, _weak_) = (VAR);
#define metamacro_foreach_cxt(MACRO, SEP, CONTEXT, ...) \
metamacro_concat(metamacro_foreach_cxt, metamacro_argcount(__VA_ARGS__))(MACRO, SEP, CONTEXT, __VA_ARGS__)
#define metamacro_argcount(...) \
metamacro_at(20, __VA_ARGS__, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
#define metamacro_concat(A, B) \
metamacro_concat_(A, B)
#define metamacro_concat_(A, B) A ## B
#define metamacro_foreach_cxt1(MACRO, SEP, …Run Code Online (Sandbox Code Playgroud) macros memory-management weak-references objective-c automatic-ref-counting