2011-10-26 18 views
0

我有一個接受兩個參數的自定義方法。我正在使用這種方法與幾個不同的數據集,其中一些只需要有一個數組傳遞和其他兩個..我想知道如果它可能傳遞一個null如果需要?如何用null初始化方法參數

//方法

- (IBAction)startSortingTheArray:(NSArray *)arrayData:(NSArray *)arrayDataB 
{ 
//.. 
} 

回答

1

是的,如果需要,你應該能夠傳遞一個null,只要你的實現被編碼爲期望它。例如:

- (void)startSortingTheArray:(NSArray *)arrayData arrayB:(NSArray *)arrayDataB 
{ 
    if (arrayData != nil) { 
     // process arrayData 
    } 
    if (arrayDataB != nil) { 
     // process arrayDataB 
    } 
} 

爲了讓你的界面更乾淨,你也可以提供方法的替代簽名,這樣做:

- (void)startSortingTheArray:(NSArray *)arrayData 
{ 
    [self startSortingTheArray:arrayData arrayB:nil]; 
} 

注意,我是從你開始變的返回類型發佈。你把它聲明爲一個IBAction,它應該把發送者作爲它的參數,而不是你傳遞它的數組。我假設你的意思是將其應用於其他功能,而不是真正適用於界面構建器操作。

+0

好大。謝謝你,我開始編寫代碼,並沒有得到錯誤,但只是想確保我沒有遺漏隱藏的東西。 –

1

是的,你能做到這一點。然後在你的startSortingTheArray處理這種情況下...(即代碼這樣的一種方式,你不會假設都存在arrayData & arrayDataB)。

我想提出的另一個建議是,如果參數太多&你有這個場景的一些參數存在&一些沒有。然後使用1個對象作爲參數。此對象被封裝爲&所有數據點都是此對象的屬性。這樣你的代碼就很清晰了,易於維護等等,等等......

0

如果您在界面構建器中使用此方法,例如將其附加到UIButton,則不可能。

,但如果你是在調用其他方法這個方法然後是

[self startSortingTheArray:nil arrayB:nil]; 

- (IBAction)startSortingTheArray:(NSArray *)arrayData:(NSArray *)arrayDataB 
{ 
if(arrayData == nil){ 
// do something 
} 
if(arrayDataB == nil){ 
// do something 
} 
if(arryaData == nil && arrayData == nil){ 
// do something 
} 

// .. }