簡體   English   中英

使用類型'const CGFloat *'(aka'const float *')類型的表達式初始化'CGFloat *'(aka'float *')會丟棄限定符)

[英]initializing 'CGFloat *' (aka 'float *') with an expression of type 'const CGFloat *' (aka 'const float *') discards qualifiers)

當我嘗試使用以下代碼獲取CGColor的組件時:

CGFloat *components = CGColorGetComponents(customizedCGColor);

我得到警告

使用類型'const CGFloat *'(aka'const float *')類型的表達式初始化'CGFloat *'(aka'float *')會丟棄限定符)。

這是什么, CGFloat *含義是什么,為什么不僅僅使用CGFloat。

您正在嘗試將const CGFloat分配給CGFloat ,這就是您收到該警告的原因。

為您的CGFloat變量定義const

const CGFloat *components = CGColorGetComponents(customizedCGColor);

如下更新您的聲明:

CGFloat const *components = CGColorGetComponents(customizedCGColor);

顏色是根據它們的紅色,綠色,藍色和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數組,因此編譯器將生成錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM