Padrão singleton Objective-C no iOS 5 ou superior

Eu tenho lido um monte de tópicos e artigos de blog sobre como implementar um singleton em object-c, vários deles talvez sendo um pouco obsoleto (ano de 2010 ou anterior), e parece que as pessoas têm opiniões diferentes sobre esta questão. .. A Apple tem documentação sobre como implementar um singleton? Eu não consegui encontrar. Se assim for, alguém poderia me dizer onde?

Eu preciso de um singleton para uma classe que tenha algumas variáveis ​​públicas e privadas. Atualmente, esta é a implementação que tenho para essa classe:

@interface MySingleton ()
   @property (strong, nonatomic) NSString *state;
@end

@implementation MySingleton

@synthesize state = _state;
@synthesize count = _count;

static MySingleton *sharedObject = nil;

+ (MySingleton *)sharedInstance
{
   static dispatch_once_t _singletonPredicate;

   dispatch_once(&_singletonPredicate, ^{
      sharedObject = [[super allocWithZone:nil] init];
   });

   return sharedObject;
}

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

Deve ser esse o caminho recomendado? E como devo inicializar as variáveis ​​de instância, pública e privada?

Outra questão que gostaria de esclarecer sobre o singleton é: isso gerará um vazamento de memória? O uso de singletons é realmente recomendado no iOS?

obrigado