En Objective-C, ¿por qué debería verificar si self = [super init] no es nulo?
Tengo una pregunta general acerca de cómo escribir métodos init en Objective-C.
Lo veo en todas partes (el código de Apple, los libros, el código fuente abierto, etc.) que un método init debería verificar si self = [super init] no es nulo antes de continuar con la inicialización.
La plantilla predeterminada de Apple para un método de inicio es:
- (id) init
{
self = [super init];
if (self != nil)
{
// your code here
}
return self;
}
¿Por qué?
Quiero decir, ¿cuándo volverá alguna vez init a cero? Si llamé a init en NSObject y obtuve cero de vuelta, entonces algo debe ser realmente jodido, ¿verdad? Y en ese caso, puede que ni siquiera escribas un programa ...
¿Es realmente tan común que un método de inicio de clase pueda devolver nil? Si es así, ¿en qué caso y por qué?