super allocWithZone tendo algumas dúvidas no conceito de classe singleton

Eu sou novo em Objective-C e estou tentando criar uma classe singleton com base emDocumentação da Apple.

+ (MyGizmoClass*)sharedManager
{
    if (sharedGizmoManager == nil) {
        sharedGizmoManager = [[super allocWithZone:NULL] init];
    }
    return sharedGizmoManager;
}

+ (id)allocWithZone:(NSZone *)zone
{
    return [[self sharedManager] retain];
}

Neste códigosharedManager é um método estático que irá verificar se o objeto desta classe está presente. Nesse caso, ele retornará o objeto criado anteriormente, caso contrário, criará um novo.

Eu tenho algumas questões:

E sesharedManager é estático, como é possível acessarsuper?

Quando imprimo[super class] Por que ele fornece o nome da classe atual?

Porque[[super allocWithZone:NULL] init] é retornar o objeto de classe atual?

E sesuper é igual aself aqui do que por que não está chamando de classe atualallocWithZone:(NSZone *)zone?

questionAnswers(3)

yourAnswerToTheQuestion