2012-11-21 94 views
0

只有部分如果我有一個方法叫調用一個方法

-(void) changeButton:(UIButton *)button andAlpha:(float)alpha andEnabled:(BOOL)enabled { 
    button.alpha = alpha; 
    button.enabled = enabled;  
} 

反正我只能撥打[self changeButton:buttonName andAlpha:0.5];和錯過andEnabled(BOOL)啓用,使其將保持相同的值。

+2

否。創建一個不同的方法,遺漏代碼。 – trojanfoe

回答

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;  
} 

但要記住,這個方法並不總是好的。例如啓用屬性可以通過一些自定義setter來備份,即使您不想更改該值,該屬性也會被調用。

0

你不能這樣做,你必須聲明另一種方法。

-(void) changeButton:(UIButton *)button andAlpha:(float)alpha; 
0

我相信你問的是C++的默認參數化函數。

但是Objective-C不支持這個。

您可以創建,雖然2種方法:

-(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;  
    } 
}