私はiPhone開発に不慣れで、Cスタイルのプログラミング、つまりポインターに非常に錆びています。赤、緑、青の3つのintを保持するRGBColorクラスを作成しました。このクラスには、3つのRGBint値のUIColorを返す静的メソッドがあります。その方法を使用して、3つのスライダーから背景色を変更します。
静的メソッドは次のとおりです。
+(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;
}
私の理解に基づくと、最初または2番目のいずれかがメソッドを作成するための有効な方法です。
ここで、このメソッドを使用して、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];
}
問題を解決するのは簡単です。静的メソッドを使用しないでください。なぜそれが機能しないのか理解できません。私が戻り値を台無しにしているある種のポインタ対オブジェクト転送はありますか?