我是 iPhone 开发的新手,对 C 风格的编程(即指针)非常生疏。我创建了一个 RGBColor 类,其中包含红色、绿色和蓝色的三个整数。在这个类中,我有一个静态方法来为三个 RGB int 值返回一个 UIColor。我使用该方法从三个滑块更改背景颜色。
这是静态方法:
+(UIColor *)getColorFromRed:(int)redValue green:(int)greenValue blue:(int)blueValue
{
UIColor *color = [[UIColor alloc]initWithRed:redValue/256
green:greenValue/256
blue:blueValue/256
alpha:1.0];
return color;
}
我最初是这样编写方法的,但是当它不起作用时改变了它:
+(UIColor *)getColorFromRGB:(int)redValue :(int)greenValue :(int)blueValue
{
UIColor *color = [[UIColor alloc]initWithRed:redValue/256
green:greenValue/256
blue:blueValue/256
alpha:1.0];
return color;
}
根据我的理解,第一种或第二种都是编写方法的有效方式。
现在,我使用该方法通过 changeBackgroundColor 函数更改视图中的背景颜色,但它不起作用:
- (void)changeBackgroundColor
{
UIColor *color = [RGBColor getColorFromRed:redSlider.value
green:greenSlider.value
blue:blueSlider.value];
[background setBackgroundColor:color];
}
如果我完全绕过我的静态方法,只让 changeBackgroundColor 方法创建 UIColor,背景颜色就会改变。
- (void)changeBackgroundColor
{
UIColor *color = [[UIColor alloc]initWithRed:redSlider.value/256
green:greenSlider.value/256
blue:blueSlider.value/256
alpha:1.0];
[background setBackgroundColor:color];
}
这个问题很容易解决:只是不要使用静态方法。我只是不明白为什么它不起作用。是否有某种指针与对象传输我弄乱了返回值?