¿Cómo uso cómodamente CGColor en un NSArray con CGGradient

Tengo dos instancias UIColor y quiero usarlas para crear un degradado. El código funciona, pero me da una advertencia cuando arrayWithObject: constructor:

advertencia: problema semántico: types de puntero incompatibles envían 'CGColorRef' (también conocido como 'struct CGColor *') a un parámetro del tipo 'id'

Sospecho que hay otros problemas relacionados con la advertencia (filtraciones, por ejemplo). Aquí está el fragment:

  UIColor *startColor, *endColor; // ... NSArray *colors = [NSArray arrayWithObjects: startColor.CGColor, endColor.CGColor, nil]; CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef) colors, NULL); 

¿Cómo puedo volver a escribir el código para deshacerte de esta advertencia de forma segura?

  • Intenté crear un CGArrayRef manualmente, pero después de un time me sentí un poco desagradable.
  • CGGradientCreateWithColorComponents funciona, pero no me gusta tener que combinar manualmente todos los componentes de color en un CGFloat components[]

Prueba esto

 UIColor *startColor, *endColor; // ... NSArray *colors = [NSArray arrayWithObjects: (id)startColor.CGColor, (id)endColor.CGColor, nil]; CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef) colors, NULL);