CGFloat* colors = CGColorGetComponents(hsbaColor.CGColor);
Возвращает ли это число с плавающей точкой или массив с плавающей точкой? Похоже, звездочка является сокращением для создания массива. Это правильно?
Сортировка.
CGFloat *colors
объявляет переменную, содержащую указатель как минимум на один CGFloat. CGColorGetComponents
возвращает указатель на несколько CGFloats, один за другим - массив C. Вы берете этот указатель и назначаете его (вставляете указатель) в переменную colors
.
Объявление переменной не создает массив. На самом деле, ни один не делает CGColorGetComponents
. Все, что создало объект CGColor, создало массив и сохранило его внутри объекта; CGColorGetComponents
позволяет вам иметь указатель на это хранилище.
Объявление переменной CGFloat *colors
создает только место - переменную - для хранения указателя на один или несколько CGFloats. В переменной есть указатель, а в этом указателе - массив.
Если это все еще неясно, см. Все, что вам нужно знать об указателях в C .