Ich habe viele Themen und Blogartikel darüber gelesen, wie man ein Singleton in objective-c implementiert, von denen einige vielleicht etwas veraltet sind (Jahr 2010 oder früher), und es sieht so aus, als hätten die Leute unterschiedliche Meinungen zu diesem Thema ... Hat Apple Dokumentation über die Implementierung eines Singletons? Ich konnte es nicht finden. Wenn ja, könnte mir jemand sagen wo?Objective-C Singleton-Muster in iOS 5+
Ich brauche ein Singleton für eine Klasse, die sowohl öffentliche als auch 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 sollte ich die Instanzvariablen public und private initialisieren?
Ein anderes Problem, das ich über Singleton klarstellen möchte, ist: Wird dies ein Speicherleck erzeugen? Wird die Verwendung von Singletons tatsächlich in iOS empfohlen?
Dank
In der Tat ... würde das in iOS4 funktionieren? (Als eine Kuriosität.) – Fattie
Und vielleicht hilfreich sein, beachten Sie die außergewöhnlich einfache Darstellung des Codes in der beliebten Antwort hier: http://codereview.stackexchange.com/questions/19829/objective-c-singleton-implementation – Fattie