2012-03-05 15 views
7

Duplicar posible:
Objective-C Default Argument Value¿Cómo definir un valor de argumento predeterminado para un método en ios?

no pude encontrar una manera de definir un argumento predeterminado a una función en iOS como normalmente haría en C++. ¿Es posible en iOS? Si no, ¿hay una solución alternativa recomendada?

+0

se puede mezclar código C++ y Obj-C – Felix

+0

supongo que quiere decir no métodos Obj-C funciones – Felix

+0

sí - i significa método Obj C siento – tiguero

Respuesta

28

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.

1

Tome un vistazo a respuestas aquí: Objective-C Default Argument Value

Lo que debe hacer es definir un método que toma todos los argumentos y luego escribir métodos de conveniencia que tienen menos argumentos, a continuación, dar la vuelta y llamar al método ya con el valor por defecto valores que se desean

Cuestiones relacionadas