Я создаю категорию 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;\
}
Однако выше не работает, так как я не могу выяснить #
/##
операторов.
Любые идеи?
Nice один! Моя фиксация после этого состояла из 37 дополнений и 223 делеций. Благодаря! Если бы 24 цветовых геттера я мог упростить. :) – Alex