¿Qué hace aDecoder en el método initWithCoder en cocoa-touch?

Después de mi publicación anterior sobre el inicializador designado initWithCoder tengo otra pregunta sobre el argumento aDecoder pasado al método de protocolo.

Aquí está el código en cuestión:

 @implementation WhereamiViewController - (id)initWithCoder:(NSCoder *)aDecoder //we're overiding the superclasses (UIViewController) inititalizer { self = [super initWithCoder:aDecoder]; if (self){ //create location manager object locationManager = [[CLLocationManager alloc] init]; //there will be a warning from this line of code [locationManager setDelegate:self]; //and we want it to be as accurate as possible //regardless of how much time/power it takes [locationManager setDesinetworkingAccuracy:kCLLocationAccuracyBest]; //tell our manager to start looking for its location immediately [locationManager startUpdatingLocation]; } return self; } 

Tenía curiosidad sobre aDecoder, por lo que cambié el nombre para ver si mi código seguiría funcionando y lo hizo. Lo que quiero saber es qué se pasa exactamente a initWithCoder como argumento. Parece que nada está en mi código. ¿El argumento es solo parte del método y debe mostrarse incluso si no se pasa nada? Otras veces he creado los inicializadores designados. Lo he hecho así:

 self = [super init] 

init es NSObjects designado como inicializador ¿verdad?

Esta es la única parte del código que no entiendo. Veo que llamo a mi superclass inicializador y luego lo implemento con un código personalizado adicional / por lo que es el valor de selfs (whereamiviewcontroller).

Establecí un marcador y miré los loggings para ver si algo me atraería pero no tuve suerte con eso.

Gracias por adelantado
Saludos

Puede ver el método -initWithCoder: en acción cuando intenta inicializar la instancia del controller de vista desde plumín o guión gráfico. En este caso, Cocoa Touch decodificará los elementos del controller del xml usando la instancia -initWithCoder: por -initWithCoder: initializer.