この違いの理由は、obj-c で作成された色が現在のカラー プロファイルを考慮して調整されるためです (システム設定 -> モニター -> 色を参照)。これは、複数のモニターがあり、実行中のアプリケーションをあるモニターから別のモニターにドラッグすると、同じ色が異なって表示されるほどです。残念ながら、colorWithDeviceRed:Green:Blue:Alpha の代わりに colorWithCalibratedRed:Green:Blue:Alpha を使用したとしても、特定のモニターで正確な色を使用することは非常に困難です。
色の知覚は複雑な問題であり、さまざまな出力デバイスが重要な役割を果たすため、1:1 マッピングがないのも不思議ではありません。しかし、両方が同じモニターで実行されている場合、色を作成し (ペイント アプリや色管理アプリ、デザイナー アプリなどで)、Cocoa でまったく同じ色を再作成することは実際に可能であるはずです。
ここで興味深いことに注意してください: OSX 上のデザイン (ブラウザーまたは PDF ファイルなどの画像) に色があり、仮想マシン (Parallels Desktop など) の Windows アプリでそのコンポーネント値を使用する場合、画面のカラーピッカーが示すように、正確な色を再現できます。
[更新]: システム カラー プロファイルを汎用プロファイルに設定するとカラー マッチングが解決されるため、このテクニカル Q&Aで説明されているように、コードで独自の汎用カラー スペースを作成することを検討する価値があるかもしれません。
[更新]: 私たち二人が探しているもののように見える別の NSColor メッセージを見つけました:
NSColor colorWithSRGBRed:green:blue:alpha
いくつかのテストで、色が正確であることがわかりました。残念ながら、このメッセージは 10.7 以降でのみ利用できます。