ReactiveCocoa:rac_keywordify宏。为什么rac_keywordify实际上需要什么?

问题描述:

在ReactiveCocoa中,有两个宏一起使用。ReactiveCocoa:rac_keywordify宏。为什么rac_keywordify实际上需要什么?

#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确实允许在weakifystrongify宏前使用@符号作为必需的前缀。 @是没有必要的,这是使这些宏看起来像关键字的样式选择,像其他语言关键字一样,如@try@synchronize

+0

谢谢。我明白了你的意思。 – 2015-02-13 07:31:28