CGFloat* colors = CGColorGetComponents(hsbaColor.CGColor);
¿Este devuelven un flotador, o una serie de flotadores? Parece que el asterisco es una abreviatura para crear una matriz. ¿Es eso correcto?
Tipo de.
CGFloat *colors
declara una variable que contiene un puntero al menos una CGFloat. CGColorGetComponents
devuelve un puntero a varios CGFloats, uno después del otro: una matriz C. Tome ese puntero y asígnelo (ponga el puntero) a la variable colors
.
Declarar la variable no crear la matriz. De hecho, tampoco lo hace CGColorGetComponents
. Lo que sea que haya creado el objeto CGColor creó la matriz y la almacenó dentro del objeto; CGColorGetComponents
le permite tener el puntero a ese almacenamiento.
Al declarar la variable CGFloat *colors
, se crea solo un lugar, la variable, para almacenar un puntero a uno o más objetos CGFloats. La cosa en la variable es el puntero, y la cosa en ese puntero es la matriz.
Si esto todavía no está claro, ver Everything you need to know about pointers in C.
@htw Gracias. ¿Esto significa que siempre es RGBA? No he visto un espacio de color de HSBA en ninguna parte de la API. –
No siempre, el CGColor podría haberse creado en el espacio de color CMYK o blanco, por ejemplo. Sin embargo, de acuerdo con la documentación de programación de color de Apple (http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/DrawColor/index.html), el espacio de color HSBA se designa como el espacio de color RGBA. Entonces, sí, en este caso, devolvería componentes RGBA, ya que el color se creó con componentes HSBA. – hbw
@htw ¡Gracias! He estado revisando los documentos. Esto es definitivamente lo que necesitaba encontrar. ¡Muy útil! –