UIDeviceRGBColor getRed:green:blue:alpha - 无法识别的选择器,不是由于内存管理

时间:2012-05-22 09:34:26

标签: iphone objective-c ios uicolor unrecognized-selector

我使用CGColorGetComponents解决了我的问题,但我想了解究竟是什么原因。

我正在使用UIColor *firstColour的实例执行以下操作:

[firstColour getRed:&r green:&g blue:&b alpha:nil];

这在模拟器上运行得非常好。然后我在我的设备上测试了它,并得到了这个错误:

UIDeviceRGBColor getRed:green:blue:alpha无法识别的选择器发送到实例

在互联网上进行一些研究后,我发现UIColor实际上被子类替换,如UIDeviceRGBColor。很好,但是子类不应该像UIColor一样工作并接受(至少)相同的方法吗?

我启用了Zombie,但显然这不是内存管理问题,就像大多数人在论坛上说的那样。我找不到UIDeviceRGBColor的文档,所以我不知道它应该如何表现。有人知道它为什么会发生,最重要的是,如果这可能会再次发生另一种方法吗?

谢谢。

1 个答案:

答案 0 :(得分:7)

UIColor中的

getRed:green:blue:alpha:方法可从iOS 5.0开始使用。最有可能的问题是您的设备具有较旧的操作系统版本,而该方法不可用。

在较旧的操作系统上,您可能需要使用CGColorRef / CGColorGetComponents函数从基础CGColorGetNumberOfComponents结构中检索颜色组件