Esto no es posible en Objective-C. Una opción es hacer algo como esto para conseguir la misma funcionalidad:
- (void)someMethodThatTakesAString:(NSString *)string
{
if (string == nil) string = @"Default Value";
// Use string
}
Si usted está buscando la posibilidad de omitir un argumento por completo, la forma típica que se hace en Objective-C es tener varios métodos con conjuntos de argumentos cada vez más específicos:
- (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
}
Entonces, si usted quiere doSomething con sólo los argumentos por defecto, sólo puede llamar a -doSomething
. Si desea establecer la opción A, pero no le importa la opción B, puede llamar al -doSomethingWithOptionA:
, etc.
Finalmente, vale la pena señalar que puede usar C++ para escribir para iOS, y también puede mezclar Objective-C y C++ usando Objective-C++. Dicho todo esto, siempre piense cuidadosamente sobre la mejor manera de hacer las cosas dentro del entorno que está utilizando. No intente forzar expresiones idiomáticas y patrones C++ en Objective-C y Cocoa. Son diferentes y están destinados a ser de esa manera. A menudo es muy fácil detectar a un programador de C++ que no ha renunciado a las convenciones de C++ al hacer la transición a escribir el código Objective-C, y eso generalmente no es algo bueno.
se puede mezclar código C++ y Obj-C – Felix
supongo que quiere decir no métodos Obj-C funciones – Felix
sí - i significa método Obj C siento – tiguero