ObjC-Por que é incorreto quando implementamos os métodos [alloc] e [init] separadamente? [duplicado]

Esta questão já tem uma resposta aqui:

Por que não devo separar alocação e init? 4 respostas

Nunca inicialize um objeto sem reatribuir nenhum ponteiro para esse objeto. Por exemplo, não faça isso:

NSObject *someObject = [NSObject alloc];
[someObject init];

Se a chamada ao init retornar algum outro objeto, você terá um ponteiro para o objeto originalmente alocado, mas nunca inicializado.

Na verdade, este é um exemplo no documento da ObjC da Apple, mas eu não estou muito claro com isso, isto é, porqueNSObject *someObject = [[NSObject alloc] init] pode prometer retornar o objeto que só precisamos, enquantoNSObject *someObject = [NSObject alloc]; [someObject init]; não podes?

questionAnswers(1)

yourAnswerToTheQuestion