Singleton de cacau e instâncias compartilhadas
Por que a Apple não tem suas classes como singleton puro, por exemplo, mesmo que a classe UIApplication permita acesso ao singleton UIApplication, como:
UIApplication *sharedApplication = [UIApplication sharedApplication];
Nada impede que você instancie explicitamente uma instância do UIApplication, como:
UIApplication *newApplication = [[UIApplication alloc] init];
O resultado, no entanto, é uma exceção de tempo de execução. A exceção afirma claramente que apenas uma instância da classe UIApplication pode estar ativa por vez.
Então, por que não ter singleton puro retornando a mesma instância no inicializador padrão?
Estou fazendo essa pergunta para ter clareza, ao criar singleton no meu projeto, para seguir qual caminho é melhor.