Em Objective-C, por que devo verificar se self = [super init] não é nulo?
Eu tenho uma pergunta geral sobre como escrever métodos init em Objective-C.
Eu vejo em todos os lugares (código da Apple, livros, código-fonte aberto, etc.) que um método init deve verificar se auto = [super init] não é nulo antes de continuar com a inicialização.
O modelo padrão da Apple para um método init é:
- (id) init
{
self = [super init];
if (self != nil)
{
// your code here
}
return self;
}
Por quê?
Quero dizer, quando é que o init vai devolver nada? Se eu chamei init no NSObject e tenho nulo de volta, então algo deve estar realmente errado, certo? E nesse caso, você pode nem escrever um programa ...
É realmente tão comum que um método init de classe possa retornar nulo? Se sim, em que caso e por quê?