2012-03-05 6 views
7

Можно создать дубликат:
Objective-C Default Argument ValueКак определить значение аргумента по умолчанию для метода в ios?

Я не мог найти способ, чтобы определить значение параметра по умолчанию для функции в ИОС, как вы обычно делаете в C++. Возможно ли это в iOS? Если нет, рекомендуется ли работать вокруг?

+0

вы можете смешать C++ и код Obj-C – Felix

+0

я предполагаю, что вы имеете в виду методы Obj-C не функции – Felix

+0

да - я имел в виду метод Obj C жаль – tiguero

ответ

28

Это невозможно в Objective-C. Один из вариантов, чтобы сделать что-то вроде этого, чтобы получить ту же функциональность:

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

    // Use string 
} 

Если вы ищете возможность опустить аргумент в целом, типичный способ, который делается в Objective-C это иметь несколько методов с все более конкретные наборы аргументов:

- (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. Если вы хотите установить опцию А, но не заботитесь о опции B, вы можете позвонить -doSomethingWithOptionA: и т. Д.

Наконец, стоит отметить, что вы можете использовать C++ для записи для iOS, и вы также можете смешивать Objective-C и C++ используя Objective-C++. Все, что было сказано, всегда тщательно думайте о том, как лучше всего делать что-то в окружающей среде, которую вы используете. Не пытайтесь заставить идиомы и шаблоны C++ на Objective-C и Cocoa. Они разные, и они должны быть такими. Часто очень легко заметить программиста на C++, который не отказался от соглашений на C++ при переходе к написанию кода Objective-C, и это обычно не очень хорошо.

1

Посмотрите на ответы здесь: Objective-C Default Argument Value

Что вы должны сделать, это определить метод, который принимает все аргументы, а затем писать удобные методы, которые принимают меньше аргументов, а затем развернуться и вызвать более длинный метод с по умолчанию значения, которые вы хотите

Смежные вопросы