Реализация Singleton Objective-C, я делаю это правильно?

В моем классе колода у меня есть

static Deck *gInstance = NULL;


+(Deck *) instance {
    @synchronized(self) {
        if (gInstance == NULL)
            gInstance = [[self alloc] init];
    }

    return (gInstance);
}

и метод init, который выглядит как

-(id) init {

    if (gInstance != NULL) {
        return self;
    }

    self = [super init];

    if (self) {
       // Lots of clever things
    }
    gInstance = self;
    return self;

}

Моя проблема здесь в основномinit реализован правильно. Пожалуйста, дайте мне знать, если то, что я написал, выглядит правильно для вас.

Или ... есть ли способ, которым я могу сделатьinit частным и мешать людям (включая меня) видеть это вообще?

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

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