Это невозможно в 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, и это обычно не очень хорошо.
вы можете смешать C++ и код Obj-C – Felix
я предполагаю, что вы имеете в виду методы Obj-C не функции – Felix
да - я имел в виду метод Obj C жаль – tiguero