2015-07-28 78 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

相關問題