Patrón de singleton Objective-C en iOS 5+
He estado leyendo muchos hilos y artículos de blog sobre cómo implementar un singleton en object-c, varios de ellos tal vez un poco obsoletos (año 2010 o anterior), y parece que las personas tienen diferentes opiniones sobre este tema. .. ¿Apple tiene documentación sobre la implementación de un singleton? No pude encontrarlo Si es así, ¿podría alguien decirme dónde?
Necesito un singleton para una clase que tenga variables tanto públicas como privadas. Actualmente, esta es la implementación que tengo para tal clase:
@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];
}
¿Debería ser esta la forma recomendada? ¿Y cómo debo inicializar las variables de instancia, públicas y privadas?
Otro tema que me gustaría aclarar acerca de singleton es: ¿generará esto una pérdida de memoria? ¿Se recomienda el uso de singletons en iOS?
Gracias