¿Cómo implementar correctamente la clase Singleton compatible con ARC y `alloc init` segura? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Cómo implemento un singleton Objective-C que sea compatible con ARC? 10 respuestas

Vi versión segura de hilo

+(MyClass *)singleton {
    static dispatch_once_t pred;
    static MyClass *shared = nil;

    dispatch_once(&pred, ^{
        shared = [[MyClass alloc] init];
    });
     return shared;
}

pero que pasaria si alguien solo llama[MyClass alloc] init] ? ¿Cómo hacer que vuelva igual instancia que el+(MyClass *)singleton ¿método?

Respuestas a la pregunta(3)

Su respuesta a la pregunta