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
?