Objective-C-Singleton-Muster in iOS 5+
Ich habe viele Themen und Blog-Artikel gelesen, in denen es darum ging, einen Singleton in Objective-C zu implementieren. Einige davon sind möglicherweise etwas veraltet (Jahr 2010 oder früher), und es scheint, als hätten die Leute unterschiedliche Meinungen zu diesem Problem. Verfügt Apple über Dokumentation zur Implementierung eines Singleton? Ich konnte es nicht finden. Wenn ja, könnte mir jemand sagen, wo?
Ich brauche einen Singleton für eine Klasse, die einige öffentliche und private Variablen hat. Derzeit ist dies die Implementierung, die ich für eine solche Klasse habe:
@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];
}
Sollte dies der empfohlene Weg sein? Und wie soll ich die Instanzvariablen public und private initialisieren?
Ein weiteres Thema, das ich in Bezug auf Singleton klarstellen möchte, ist: Wird dies zu einem Speicherverlust führen? Wird die Verwendung von Singletons in iOS tatsächlich empfohlen?
Vielen Dank