super allocWithZone mający pewne wątpliwości w koncepcji pojedynczej klasy

Jestem nowy w Objective-C i próbuję stworzyć klasę singleton na podstawieDokumentacja Apple.

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

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

W tym kodziesharedManager to statyczna metoda, która sprawdzi, czy obiekt tej klasy jest obecny. Jeśli tak, zwróci poprzednio utworzony obiekt, w przeciwnym razie utworzy nowy.

Mam parę pytań:

JeślisharedManager jest statyczny, jak można uzyskać do niego dostępsuper?

Kiedy drukuję[super class] dlaczego podaje nazwę bieżącej klasy?

Dlaczego[[super allocWithZone:NULL] init] czy zwraca bieżący obiekt klasy?

Jeślisuper jest równeself tutaj, dlaczego nie nazywa się obecnej klasyallocWithZone:(NSZone *)zone?

questionAnswers(3)

yourAnswerToTheQuestion