我使用CGColorGetComponents
解决了我的问题,但我想了解究竟是什么原因。
我正在使用UIColor *firstColour
的实例执行以下操作:
[firstColour getRed:&r green:&g blue:&b alpha:nil];
这在模拟器上运行得非常好。然后我在我的设备上测试了它,并得到了这个错误:
UIDeviceRGBColor getRed:green:blue:alpha无法识别的选择器发送到实例
在互联网上进行一些研究后,我发现UIColor
实际上被子类替换,如UIDeviceRGBColor
。很好,但是子类不应该像UIColor
一样工作并接受(至少)相同的方法吗?
我启用了Zombie,但显然这不是内存管理问题,就像大多数人在论坛上说的那样。我找不到UIDeviceRGBColor
的文档,所以我不知道它应该如何表现。有人知道它为什么会发生,最重要的是,如果这可能会再次发生另一种方法吗?
谢谢。
答案 0 :(得分:7)
getRed:green:blue:alpha:
方法可从iOS 5.0开始使用。最有可能的问题是您的设备具有较旧的操作系统版本,而该方法不可用。
在较旧的操作系统上,您可能需要使用CGColorRef
/ CGColorGetComponents
函数从基础CGColorGetNumberOfComponents
结构中检索颜色组件