如果我有一个名为
的方法-(void) changeButton:(UIButton *)button andAlpha:(float)alpha andEnabled:(BOOL)enabled {
button.alpha = alpha;
button.enabled = enabled;
}
无论如何,我只能拨打[self changeButton:buttonName andAlpha:0.5];
并且错过andEnabled(BOOL)
已启用,以便保持相同的价值。
答案 0 :(得分:2)
不,只有在声明其他方法时才会这样做。
喜欢
-(void) changeButton:(UIButton *)button andAlpha:(float)alpha {
[self changeButton:button andAlpha:alpha andEnabled:button.enabled];
}
-(void) changeButton:(UIButton *)button andAlpha:(float)alpha andEnabled:(BOOL)enabled {
button.alpha = alpha;
button.enabled = enabled;
}
但请记住,这种方法并不总是好的。例如,某些自定义设置器可以备份已启用属性,即使您不想更改该值,也会调用该设置器。
答案 1 :(得分:0)
你不能这样做,你必须声明另一种方法。
-(void) changeButton:(UIButton *)button andAlpha:(float)alpha;
答案 2 :(得分:0)
我相信你问的是c ++的默认参数化功能。
但Objective-C不支持这一点。
您可以创建两种方法:
-(void) changeButton:(UIButton *)button andAlpha:(float)alpha {
button.alpha = alpha;
}
-(void) changeButton:(UIButton *)button andAlpha:(float)alpha andEnabled:(BOOL)enabled {
button.alpha = alpha;
button.enabled = enabled;
}
对于C:使用ObjC没有为C子集添加任何特殊内容。任何无法在纯C中完成的事情都无法通过在ObjC中编译来完成。这意味着,您不能拥有默认参数,也不能重载函数。改为创建2个函数。
另一种方式(比特很长,有人会很少使用)是有一个标志并检查标志是否为。
-(void) changeButton:(UIButton *)button andAlpha:(float)alpha andEnabled:(BOOL)enabled withFlag:(BOOL)flag{
button.alpha = alpha;
if(flag){
button.enabled = enabled;
}
}