2015-07-28 73 views
1

当我尝试使用以下代码获取CGColor的组件:使用'const CGFloat *'类型的表达式(又名'const float *')初始化'CGFloat *'(aka'float *')会丢弃限定符)

CGFloat *components = CGColorGetComponents(customizedCGColor); 

我得到的

初始化 'CGFloat的*'(又名 '浮动*')与类型 '常量CGFloat的*' 的表达的警告(又名 'const的浮子*')丢弃限定符) 。

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

回答

0

您正试图将const CGFloat指定为CGFloat,这就是您收到该警告的原因。

定义constCGFloat可变

const CGFloat *components = CGColorGetComponents(customizedCGColor); 
0

更新您的声明如下:

CGFloat const *components = CGColorGetComponents(customizedCGColor); 
0

颜色在他们的红,绿,蓝和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阵列。

+0

谢谢trojanfoe!你的回答非常有帮助。 – Johnson

相关问题