2012-03-05 1620 views
7

可能重複:
Objective-C Default Argument Value如何在ios中爲方法定義默認參數值?

我無法找到一個方法來定義一個默認的參數傳遞給函數在IOS就像你通常會用C++做。在iOS中可以嗎?如果沒有,推薦使用什麼工作?

+0

你可以混合C++和的OBJ-C代碼 – Felix 2012-03-05 22:38:01

+0

我想你指的對象 - 方法而不是函數 – Felix 2012-03-05 22:38:57

+0

是 - 我的意思的OBJ C法對不起 – tiguero 2012-03-05 22:42:00

回答

28

這在Objective-C中是不可能的。一種選擇是做這樣的事情來獲得相同的功能:如果你正在尋找一個在完全忽略某個參數的能力,這是在Objective-C進行的典型方式

- (void)someMethodThatTakesAString:(NSString *)string 
{ 
    if (string == nil) string = @"Default Value"; 

    // Use string 
} 

就是有多種方法逐步更具體的參數設置:

- (void)doSomethingWithOptionA:(BOOL)optionA andOptionB:(int)optionB 
{ 
    // Do something using options to control exactly what's done 
} 

- (void)doSomethingWithOptionA:(BOOL)optionA 
{ 
    [self doSomethingWithOptionA:optionA andOptionB:42]; // Where 42 is the default for optionB 
} 

- (void)doSomething; 
{ 
    [self doSomethingWithOptionA:NO]; // NO is the default for optionA 
} 

然後如果你想只用默認參數DoSomething的,你可以叫-doSomething。如果你想設置optionA,但不關心optionB,你可以撥打-doSomethingWithOptionA:等。

最後,值得注意的是,你可以使用C++爲iOS編寫代碼,而且你也可以混合使用Objective-C和C++使用Objective-C++。總而言之,請始終仔細考慮如何在您所使用的環境中做最好的事情。不要試圖將C++習語和模式強制到Objective-C和Cocoa上。他們不同,他們的目的就是這樣。找到一個在編寫Objective-C代碼時沒有放棄C++約定的C++程序員通常很容易,而這通常不是一件好事。

1

看看答案在這裏:Objective-C Default Argument Value

你應該做的就是定義需要的所有參數,然後寫少走參數方便的方法,然後轉身和調用較長方法使用默認的方法你想值