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
?