Во-первых, имейте в виду, что три числа не описывают цвет, а три числа вместе с цветовым пространством. RGB - это не цветовое пространство, а то, что называется цветовой моделью. Есть много цветовых пространств с моделью RGB. Таким образом, ((1,0,0), sRGB) отличается от цвета ((1,0,0), Adobe RGB). Знаете ли вы, как работают строковые кодировки, где куча байтов сама по себе не является строкой? Это очень похоже на это. Это также похоже на то, что вы как бы напрашиваетесь на неприятности всякий раз, когда хотите посмотреть на значения компонентов, потому что это возможность испортить обработку цветового пространства.
Извините, ничего не могу с собой поделать. В любом случае, я отвечу на вопрос так, как если бы ваш исходный цвет был ((1,0,0), Generic RGB).
NSColor *color = [NSColor colorWithCalibratedRed:1 green:0 blue:0 alpha:1];
NSLog(@"hue! %g saturation! %g brightness! %g, [color hueComponent], [color saturationComponent], [color brightnessComponent]);
а с другой стороны
NSColor *color = [NSColor colorWithCalibratedHue:h saturation:s brightness:b alpha:1];
NSLog(@"red! %g green! %g blue! %g, [color redComponent], [color greenComponent], [color blueComponent]);
Эти методы fooComponent не работают со всеми цветами, только в двух определенных цветовых пространствах, см. Документы. Вы уже знаете, что хорошо, если вы создали цвета самостоятельно с помощью методов, описанных выше. Если у вас есть цвет неизвестного происхождения, вы можете (попытаться) преобразовать его в цветовое пространство, в котором вы можете использовать эти методы компонентов с -[NSColor colorUsingColorspaceName:]
.