2010-03-26 10 views
14

Acabo de notar que mi ViewController no llama a init (ver a continuación) cuando se inicia.ViewController init?

-(id)init { 
    self = [super init]; 
    if(self) { 
     NSLog(@"_init: %@", [self class]); 
     otherStuff... 
    } 
    return self; 
} 

¿Hay una razón para esto, o es reemplazado por viewDidLoad

-(void)viewDidLoad { 
    otherStuff .. 
    [super viewDidLoad]; 
} 

aplausos Gary

Respuesta

16

No reemplazado por viewDidLoad. Es solo que no se llama init por initWithNibName:bundle:.

Escribo el código de configuración en viewDidLoad.

+0

Gracias, Frank! ¡Tu respuesta es realmente útil para mí! – fatuhoku

3

awakeFromNib se utiliza comúnmente.

0
  • (void) init funciona bien si crea el objeto en el código, pero TIENE que asegurarse de que sea el que llame. No sirve de nada desarrollar el método templado initWithNibName: bundle: y luego llamar al otro.
4

Si el controlador de vista se está inicializando de un guión, entonces usted puede utilizar:

- (instancetype)initWithCoder:(NSCoder *)coder 
{ 
    self = [super initWithCoder:coder]; 
    if (self) { 
     // do init here 
    } 
    return self; 
} 
Cuestiones relacionadas