Iphone 在Objective-C中比较颜色

Iphone 在Objective-C中比较颜色,iphone,objective-c,comparison,colors,quartz-graphics,Iphone,Objective C,Comparison,Colors,Quartz Graphics,我试图用Objective-C编写的代码来确定两种颜色是否相等 我使用这段代码来确定这两种颜色是否相等(目前用于调试目的) 我的控制台正在显示 2009-10-20 00:27:10.814 colorGame[13588:207] currentColor is kCGColorSpaceModelRGB 0 0 1 1 2009-10-20 00:27:10.815 colorGame[13588:207] Adjacent Color is kCGColorSpaceModelRGB 0

我试图用Objective-C编写的代码来确定两种颜色是否相等

我使用这段代码来确定这两种颜色是否相等(目前用于调试目的)

我的控制台正在显示

2009-10-20 00:27:10.814 colorGame[13588:207] currentColor is kCGColorSpaceModelRGB 0 0 1 1 
2009-10-20 00:27:10.815 colorGame[13588:207] Adjacent Color is kCGColorSpaceModelRGB 0 0 1 1 
2009-10-20 00:27:10.815 colorGame[13588:207] 0
如果有人问我,我可以发布更多的代码(我不知道是否真的需要更多)。当前颜色最初定义为

UIColor *currentColor;
如果有帮助的话


我相当肯定我只是做了比较错误,而且可能有一些内置的方法可以比较颜色,我只是不知道。

必须使用
isEqual:
方法比较对象,而不是使用
=
,它只是比较指针地址,而不是测试对象指针的等效性,这可能永远都不会变成现实。如果您想使用实际的颜色值,那么您需要获得底层的CGColor引用

@implementation UIColor (compare)

- (BOOL) isEqualToColor:(UIColor *) otherColor
{
return CGColorEqualToColor(self.CGColor, otherColor.CGColor);
}

@end
请记住,看起来相同的两种颜色可能会返回真值,也可能不会返回真值,因为组件保持为浮点数,并且它们的差值可能小于显示硬件可以解析的值


还请记住,如果它们在不同的颜色空间中定义,此方法将永远不会返回真值。

问题应改为“在Objective-C中比较对象”,因为它与颜色无关。谢谢!我只是稍微修改了一下我的代码,将字符串输出与颜色本身进行比较,同时使用isEqual。现在工作得很好。谢谢我刚刚遇到过这样一种情况,两个UIColor具有相同的值组件,并且在相同的颜色空间中,但是当[UIColor isEqual:]工作时,CGColorEqualToColor返回的值不相等,我缺少什么吗?
@implementation UIColor (compare)

- (BOOL) isEqualToColor:(UIColor *) otherColor
{
return CGColorEqualToColor(self.CGColor, otherColor.CGColor);
}

@end