我正在创建一个UIColor
类别,其中包含一组我想要轻松访问并进行缓存的颜色。
这基本上是我创建颜色的方式:
#define RGB(r, g, b) [self colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1]
// [..]
+ (instancetype)pigletColor
{
static UIColor *pigletColor = nil;
if (!pigletColor) {
pigletColor = RGB(237.0, 0.0, 130.0);
}
return pigletColor;
}
然而,重复以上步骤十次并不是很整洁简便,因此我试图创建一个宏来轻松完成这个任务。
理想情况下,我希望用COLORGETTER(piglet, 234.0, 0.0, 130.0)
替换上述内容。我尝试过了,但无法使其正常工作。目前只能做到这一步:
#define COLORGETTER(name, red, green, blue)\
+ (instancetype *)##name##Color\
{\
static UIColor *##name##Color = nil;\
if (!##name##Color) {\
##name##Color = RGB(red, green, blue);\
}\
return ##name##Color;\
}
然而,上述方法并不可行,因为我无法理解 #
/##
运算符的含义。
有什么想法吗?