Singleton en iOS Objective C no impide más de una instancia

Sé que hay varios hilos sobre esto, pero ninguno responde mis preguntas.

He implementado mi clase de singleton de esta manera (consciente de la controversia sobre los singletons):

+ (MyClass*) sharedInstance {
    static MyClass *_sharedInstance = nil;
    static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^{
        _sharedInstance = [[MyClass alloc] init];
    });
    return _sharedInstance;
}

- (instancetype)init{
    self = [super init];
    if (self) {
        //setup code
    }
    return self;
}

Intenté crear instancias de un objeto diferente y lo comparé con el devuelto por sharedInstance con '==' y, de hecho, fueron diferentes.

Preguntas:

¿No debería ser imposible crear más de un objeto de la clase singleton? ¿No es ese el punto? La implementación de Singleton en Java lo impide.Y si es así, ¿cómo? ¿Debo hacer un método de configuración y llamarlo en lugar de tener el init implementado y hacerlo?¿Es esta la implementación correcta?

Respuestas a la pregunta(8)

Su respuesta a la pregunta