當(dāng)我完成了一個(gè)簡(jiǎn)單的快捷返回UIColor的宏之后:
#define KColor(r,g,b,a) [UIColor k_colorWithRed:r green:g blue:b alpha:a]
突然又想到實(shí)際開(kāi)發(fā)中經(jīng)常需要使用到灰色,而UIColor默認(rèn)只能返回幾種默認(rèn)的幾個(gè)固定的灰色,不如自己在創(chuàng)建一個(gè)灰色的宏:
#define KColorGray(x) KColor(x,x,x,1)
看了一秒鐘發(fā)現(xiàn)不對(duì),這么寫(xiě)肯定有問(wèn)題,比如下面的情況:
NSInteger gray = 100
self.view.backgroundColor = KColorGray(gray += 50);
本來(lái)期望的顏色是r:150,g:150,b:150,實(shí)際上的顏色是r:150,g:200,b:250,因?yàn)楹甑亩x本質(zhì)是替換,上面實(shí)際上是這樣的:
self.view.backgroundColor = KColor(gray += 50,gray += 50,gray += 50,1);
所以為了防止這樣情況,需要這么寫(xiě):
#define KColorGray(x) ({\
NSInteger __color = (x);\
KColor(__color,__color,__color,1);\
})\