CGFloat* colors = CGColorGetComponents(hsbaColor.CGColor);
它返回一个 float 还是 float 数组?看起来星号是创建数组的简写。这是正确的吗?
当我在 HSB UIColor 对象的 CGColor 属性上调用此函数时,它会将值转换为 RGB 吗?
最佳答案
CGFloat* colors = CGColorGetComponents(hsbaColor.CGColor);
Does this return a float, or an array of floats? It looks like the asterisk is shorthand for creating an array. Is that correct?
有点。
CGFloat *colors
声明一个变量,该变量保存指向至少一个 CGFloat 的指针。 CGColorGetComponents
返回一个指向多个 CGFloats 的指针,一个接着一个——一个 C 数组。您获取该指针并将其分配给(将指针放入)colors
变量。
声明变量不会创建数组。事实上,CGColorGetComponents
也没有。 。无论创建 CGColor 对象,都会创建数组并将其存储在对象内; CGColorGetComponents
让您拥有指向该存储的指针。
声明 CGFloat *colors
变量仅创建一个位置(变量)来存储指向一个或多个 CGFloats 的指针。变量中的东西是指针,指针处的东西是数组。
如果仍然不清楚,请参阅 Everything you need to know about pointers in C .
关于iphone - CGColorGetComponents() 返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792119/