Как с комфортом использовать CGColor в массиве NSArray с CGGradient

У меня есть два экземпляра UIColor, и я хочу использовать их для создания градиента. Код работает, но выдает предупреждение, когда я вызываю конструктор arrayWithObject: :

предупреждение: семантическая проблема: несовместимо типы указателей, отправляющие 'CGColorRef' (aka 'struct CGColor *') в параметр типа 'id'

Я подозреваю, что существуют другие проблемы, связанные с предупреждением (например, утечки). Вот фрагмент:

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

Как я могу переписать код, чтобы избавиться от этого предупреждения безопасным способом?

  • Я попытался создать CGArrayRef вручную, но через некоторое время это стало немного неприятно.
  • CGGradientCreateWithColorComponents работает, но мне не нравится вручную объединять все компоненты цвета в компоненты CGFloat []

10
задан Martin Wickman 10 May 2011 в 12:35
поделиться