Как правильно реализовать ARC-совместимый и `alloc init` безопасный класс Singleton? [Дубликат]

На этот вопрос уже есть ответ здесь:

Как реализовать синглтон Objective-C, совместимый с ARC? 10 ответов

Я видел нить безопасную версию

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

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

но что будет, если кто-то просто позвонит[MyClass alloc] init] ? Как заставить его вернуть тот же экземпляр, что и+(MyClass *)singleton метод?

Ответы на вопрос(3)

Ваш ответ на вопрос