使用'const CGFloat *'(又名'const float *')表达式初始化'CGFloat *'(又名'float *')会丢弃限定符)

时间:2015-07-28 10:20:59

标签: ios

当我尝试使用以下代码获取CGColor的组件时:

CGFloat *components = CGColorGetComponents(customizedCGColor);

我收到了

的警告
  

使用'const CGFloat *'(又名'const float *')类型的表达式初始化'CGFloat *'(又名'float *')会丢弃限定符。)

这是什么以及CGFloat *实际上是什么意思,为什么不使用CGFloat。

3 个答案:

答案 0 :(得分:0)

您正尝试将const CGFloat分配给CGFloat,这就是您收到警告的原因。

const变量

定义CGFloat
const CGFloat *components = CGColorGetComponents(customizedCGColor);

答案 1 :(得分:0)

按以下方式更新您的声明:

CGFloat const *components = CGColorGetComponents(customizedCGColor);

答案 2 :(得分:0)

颜色是根据红色,绿色,蓝色和阿尔法强度定义的,并且该方法返回这些组件的数组;因此:

:before

但是返回的组件数量取决于所使用的色彩空间。

您收到错误的原因是您用于保存返回数组的变量不是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; 数组。