Now you could check if your singleton subclass has already been initialized by checking isInitialized before calling [super init] because DOSingleton will set this property to YES in its init method and your initialization never calls (if you follow convention).
Need some other method to check if singleton has been initialized in subclasses.