当我尝试比较两个UIColors的RGB组件时,我收到此警告
在.h文件中,我声明了这个
-(int) ColorDiff:(UIColor *) color1 :(UIColor *)color2;
在.m文件中
- (int) ColorDiff:(UIColor *) color1 :(UIColor *)color2{
... //get RGB components from color1& color2
// compute differences of red, green, and blue values
CGFloat red = red1 - red2;
CGFloat green = green1 - green2;
CGFloat blue = blue1 - blue2;
// return sum of squared differences
return (abs(red) + abs(green) + abs(blue));
}
然后在同一个.m文件中,我比较像这样的2个UIColors
int d= ColorDiff(C1,C2);// I got the warning right here.
我做了研究,人们说我必须包含头文件。我这样做但在我的情况下没有帮助。 为什么我会收到此错误?
答案 0 :(得分:22)
这是因为您将函数定义为实例方法,而不是函数。有两种解决方案。
其中一个是将方法声明更改为:
int ColorDiff(UIColor *color1, UIColor *color2) {
// colorDiff's implementation
}
或者,您可以将此呼叫更改为:
int d = [self ColorDiff:C1:C2];
答案 1 :(得分:3)
.h文件中的声明与.m文件中的实现不符。
如果.m中的方法实现如下:
- (int) ColorDiffBetweenColorOne:(UIColor *) color1 AndColorTwo:(UIColor *)color2
{
... //get RGB components from color1& color2
// compute differences of red, green, and blue values
CGFloat red = red1 - red2;
CGFloat green = green1 - green2;
CGFloat blue = blue1 - blue2;
// return sum of squared differences
return (abs(red) + abs(green) + abs(blue));
}
比你应该在.h:
中声明它- (int) ColorDiffBetweenColorOne:(UIColor *) color1 AndColorTwo:(UIColor *)color2;
并从同一个.m文件中调用它,使用:
int d = [self ColorDiffBetweenColorOne:C1 AndColorTwo:C2];
答案 2 :(得分:1)
h.file中缺少原型!