当我尝试使用以下代码获得CGColor
的组件时:
CGFloat *components = CGColorGetComponents(customizedCGColor);
得到
的警告使用类型为'const CGFloat *'(又名'const float *')的表达式初始化'CGFloat *'(又名'const float *')将放弃限定符)。
这是什么,CGFloat *
实际上是什么意思的细节,为什么不使用CGFloat
颜色是根据它们的红色,绿色,蓝色和alpha强度定义的,该方法返回这些组件的数组;因此:
const CGFloat *components = CGColorGetComponents(customizedCGColor);
CGFloat red = components[0];
CGFloat blue = components[1];
CGFloat green = components[2];
CGFloat alpha = components[3];
然而,返回的组件数量确实取决于所使用的颜色空间。
你得到错误的原因是你用来保存返回数组的变量不是const
,因此是一个错误的类型。
它被定义为const
的原因是因为该方法不希望调用者通过它返回的数组改变颜色组件;例如,如果您输入:
const CGFloat *components = CGColorGetComponents(customizedCGColor);
components[0] = newRed;
编译器将生成一个错误,因为你不能修改const
数组
您正在尝试将const CGFloat
分配给CGFloat
,这就是为什么您会收到此警告。
为CGFloat
变量定义const
const CGFloat *components = CGColorGetComponents(customizedCGColor);
按如下方式更新声明:
CGFloat const *components = CGColorGetComponents(customizedCGColor);