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.

questionAnswers(2)

yourAnswerToTheQuestion