objective-c - 具有校准值的 NSColor 的工作方式与常规颜色不同吗?

标签 objective-c cocoa

我在 View 中使用一种方法来设置颜色,并在 awakeFromNib 中使用它传递颜色 [NSColor colorWithCalibrateRed: 绿色: 蓝色: alpha:]

应用程序不断崩溃,并出现“[NSCFNumber set] 无法识别的选择器”错误。 插入断点后,我发现它将我的变量定义为“NSCalibrateRGBColor”。当我使用一种便捷方法(blueColor、whiteColor 等)定义颜色时,该应用程序运行正常。我认为这些只是设置 RGB 值的快捷方式。我不知道为什么我以前没有遇到过这个问题,我经常使用这样的颜色。为什么它以不同的方式处理这个问题,我可以让它将其解释为常规颜色吗?

编辑: 代码是: [self setLineColor:[NSColor colorWithCaliberatedRed:green:blue:alpha];在我的 awakeFromNib 中。我还发现它是一个非 1 alpha 值,导致颜色被定义为“NSCalibrateRGBColor”。 Alpha 值 1 与便捷方法一样,会导致在调试中将颜色定义为“NSCachedRGBColor”,这完全可以正常工作。

最佳答案

The application kept crashing, with the error with "[NSCFNumber set] unrecognized selector."

这意味着您过度释放了颜色,然后另一个对象(在本例中为 NSNumber)被分配给同一个指针。然后,您将 set 消息发送到您认为是您的颜色的对象,但它现在实际上是一个 NSNumber 对象。结果:那个错误。它与您使用校准与未校准的色彩空间无关。

所有颜色都支持相同的 NSColor 接口(interface)。您看到的 NS[snip]Color 类是 NSColor 的私有(private)子类;它们都支持 NSColor 的所有方法。就您而言,它们都只是 NSColor。

关于objective-c - 具有校准值的 NSColor 的工作方式与常规颜色不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/572000/

相关文章:

模态视图的 iOS7 状态栏字体颜色

iphone - iPhone应用程序读取文件时出现问题!

cocoa - 界面生成器中的 NSWindowController 对象链接

cocoa - iWork 风格的检查器面板中的选项卡

iphone - 图书馆应用程序与独立 iPhone 应用程序

ios - WKWebView 与本地文件

iphone - 基于客户端-服务器的 iPhone 应用程序中的通信安全

ios - 从 NSString 中删除重复的单词并另存为新的 NSString

iphone - 如何对用户在 iPhone 中输入的电话号码的文本字段执行验证?

objective-c - Cocoa 中的 NSXML 搜索