Cocoa singleton and shared instances
<p>Why do Apple not have their classes as pure singleton, for example, even though the UIApplication class gives you access to the UIApplication singleton, like:</p>

<pre><code>UIApplication *sharedApplication = [UIApplication sharedApplication];
</code></pre>

<p>Nothing prevents you from explicitly instantiating a UIApplication instance, like:</p>

<pre><code>UIApplication *newApplication = [[UIApplication alloc] init];
</code></pre>

<p>The result, however, is a runtime exception. The exception clearly states that only one instance of the UIApplication class can be alive at any one time.</p>

<p>Then why not have pure singleton by returning same instance in the default initializer? </p>

<p>I am asking this question to have clarity, when creating singleton on my project, to follow which way is better.</p>