I agree. However, this implementation requires a couple of more adjustments. 

My main point was to switch from the old Apple approved singleton method which butchers the init method and the new GCD approach which allows for multiple instances to be created when necessary. The current method explicitly does not allow for a subclass because the initialize method calls the DDTTYLogger class. If a subclass does not then implement it's own initialize method, the super initialize method is called and creates a DDTTYLogger instance. 

The new generic singleton pattern is: 

<pre><code>+ (instancetype) sharedInstance
{
    static dispatch_once_t onceToken;
    static id sharedInstance;
    dispatch_once(&amp;onceToken, ^{
        sharedInstance = [[self alloc] init];
    });
    return sharedInstance;
}
</code></pre>