iOS带多次使用参数的宏定义

当我完成了一个简单的快捷返回UIColor的宏之后:

#define KColor(r,g,b,a) [UIColor k_colorWithRed:r green:g blue:b alpha:a]

突然又想到实际开发中经常需要使用到灰色,而UIColor默认只能返回几种默认的几个固定的灰色,不如自己在创建一个灰色的宏:

#define KColorGray(x) KColor(x,x,x,1)

看了一秒钟发现不对,这么写肯定有问题,比如下面的情况:

NSInteger gray = 100
self.view.backgroundColor = KColorGray(gray += 50);

本来期望的颜色是r:150,g:150,b:150,实际上的颜色是r:150,g:200,b:250,因为宏的定义本质是替换,上面实际上是这样的:

self.view.backgroundColor = KColor(gray += 50,gray += 50,gray += 50,1);

所以为了防止这样情况,需要这么写:

#define KColorGray(x) ({\
    NSInteger __color = (x);\
    KColor(__color,__color,__color,1);\
})\
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • iOS中的颜色有UIColor、CGColor、CIColor三种,下面对三种颜色分别进行说明: 一、常用的UIC...
    lfp901020阅读 11,703评论 0 7
  • 接下来我们看Base文件夹下的UIKIt文件夹的内容。 1.UIColor+YYAdd 这里看了这个类,里面有许多...
    充满活力的早晨阅读 6,912评论 0 1
  • 转载于:http://blog.csdn.net/hbblzjy/article/details/51859570...
    狼之独步阅读 3,693评论 0 0
  • NO:648 1、 除非产品能够打动消费者,否则他们决不会掏钱,文案要面对现实,它不会改变产品滞销的本质特点,所以...
    哲子的二三条阅读 1,036评论 0 0
  • 河边的柳枝一点一点地吐出了嫩芽,小草也钻出来透青了,河道里时而平静时而湍急的水,从冬天的素净中苏醒过来,被大自...
    凉生_3216阅读 1,612评论 3 0

友情链接更多精彩内容