ReactiveCocoa:rac_keywordify 宏。实际需要 rac_keywordify 的目的是什么?
ReactiveCocoa: rac_keywordify macros. For what purpose rac_keywordify is actually need?
在ReactiveCocoa中有两个宏是结合使用的。
#define weakify(...) \
rac_keywordify \
metamacro_foreach_cxt(rac_weakify_,, __weak, __VA_ARGS__)
#define strongify(...) \
rac_keywordify \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Wshadow\"") \
metamacro_foreach(rac_strongify_,, __VA_ARGS__) \
_Pragma("clang diagnostic pop")
#if DEBUG
#define rac_keywordify autoreleasepool {}
#else
#define rac_keywordify try {} @catch (...) {}
#endif
谁能解释一下实际需要 rac_keywordify
的目的是什么?
我看了关于 rac_keywordify
的描述,但还是不明白。
如果有人提供示例和描述,我将非常感激。
rac_keywordify
所做的只是允许使用 @
符号作为 weakify
和 strongify
宏前面的必需前缀。 @
不是必需的,它是一种样式选择,可以使这些宏看起来像关键字,就像其他语言的关键字一样,例如 @try
或 @synchronize
.
在ReactiveCocoa中有两个宏是结合使用的。
#define weakify(...) \
rac_keywordify \
metamacro_foreach_cxt(rac_weakify_,, __weak, __VA_ARGS__)
#define strongify(...) \
rac_keywordify \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Wshadow\"") \
metamacro_foreach(rac_strongify_,, __VA_ARGS__) \
_Pragma("clang diagnostic pop")
#if DEBUG
#define rac_keywordify autoreleasepool {}
#else
#define rac_keywordify try {} @catch (...) {}
#endif
谁能解释一下实际需要 rac_keywordify
的目的是什么?
我看了关于 rac_keywordify
的描述,但还是不明白。
如果有人提供示例和描述,我将非常感激。
rac_keywordify
所做的只是允许使用 @
符号作为 weakify
和 strongify
宏前面的必需前缀。 @
不是必需的,它是一种样式选择,可以使这些宏看起来像关键字,就像其他语言的关键字一样,例如 @try
或 @synchronize
.