2010-08-16 12 views
9

Recientemente me di cuenta de que necesitaba agregar un argumento al método init para una clase de ayuda que tengo. La clase auxiliar trata con vistas de alerta, por lo que ya tiene un montón de argumentos en el init, que se miran, ajustan y luego se envían a la vista de alerta.¿Está bien llamar a un método init en sí mismo, en un método init?

Como utilizo el método tal como está en varios lugares, no quiero arriesgarme a fallar (al perder uno de esos lugares y obtener un "selector no reconocido" en manos de un cliente) decidí para agregar un segundo método de inicio.

I.e.

- (id)initWithA:B:C:D: 

y

- (id)initWithA:B:C:foo:D: 

En este momento simplemente he copia pegada aplicación de la primera en el foo: uno, pero lo ideal es lo que estaría bien es hacer el primer llamar a la segunda, es decir

- (id)initWithA:a B:b C:c D:d 
{ 
    return [self initWithA:a B:b C:c foo:nil D:d]; 
} 

pero no estoy seguro si esto es aceptable o no. El código parece estar funcionando bien.

Respuesta

16

Sí, eso es perfectamente aceptable y en realidad bastante común.

Es por eso que tenemos cosas llamadas "Designated Initializer". Ese es el método de inicialización al que todos los demás inicializadores se redireccionan (generalmente).

+0

Vaya, definitivamente necesito buscar más antes de preguntar algo. ¡Muchas gracias! Tengo que esperar 10 minutos antes de que pueda aceptar aparentemente. Aceptaremos pronto. – Kalle

+5

@Kalle teóricamente todas las respuestas están en la documentación. Sin embargo, todavía (por lo general) vale la pena hacer la pregunta solo para que otras personas puedan encontrar la información más fácilmente en el futuro. :) –

Cuestiones relacionadas