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 respostasNunca 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?