1

我有一个类别NSObject+Utilities,其中包含我在项目中使用的各种工具方法。不幸的是,我必须在返回的方法中再添加一个参数NSColor

这里有一个例子:

- (NSColor*) ccBlueLight   { 
   return  [self libMakeAColor    :0.000f :0.535f :1.0f :1.000f];
}

最后一个参数 ( 1.000f) 负责透明度。当我创建这个方法时,我没有想到透明度,我将它固定为1.000f. 由于我cc在不同的项目中使用这些颜色,我不能简单地添加另一个参数而不会在使用它们时在其他项目中出错。

有没有办法毫无问题地添加透明度参数?

4

3 回答 3

4

编写一个带有透明度参数的新方法:

- (NSColor*) ccBlueLight:(CGFloat)transparency { 
   return  [self libMakeAColor    :0.000f :0.535f :1.0f :transparency];
}

并更改现有方法的实现以使用默认值。

- (NSColor*) ccBlueLight {
    return [self ccBlueLight:1.000f];
}

请注意,这两种是不同的方法。旧的签名没有改变,也没有必要改变旧的调用者。

于 2012-12-29T09:16:06.660 回答
1

有什么反对简单地添加第二种方法的吗?这样一个项目可以使用原始方法,而另一个项目可以使用新方法。

- (NSColor *) ccBlueLightWithAlpha:(NSNumber *)alpha
{
    return  [self libMakeAColor    :0.000f :0.535f :1.0f :[alpha floatValue];    
} 
于 2012-12-29T09:18:49.887 回答
0

像这样?

- (NSColor*) ccBlueLight   { 
  return  [self libMakeAColorRed:0.000f green:0.535f blue:1.0f];
}

- (NSColor*) ccBlueLightWithAlpha:(CGFloat)alpha   { 
  return  [self libMakeAColorRed:0.000f green:0.535f blue:1.0f alpha:alpha];
}
于 2012-12-29T09:15:02.507 回答