Je connais 2 façons. Qu'est-ce qui est mieux? Et quelque chose de mieux que 2 façons?Quelle est la meilleure façon de partager une instance de classe (créer et partager un singleton)?
+ (MyClass *)shared {
/*
static MyClass *sharedInstance = nil;
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [[self alloc] init];
}
}
return sharedInstance;
*/
/*
static dispatch_once_t pred;
static MyClass *sharedInstance = nil;
dispatch_once(&pred, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
*/
}
Cela ne permet pas de configurer la classe avant que la méthode d'instance est créée. La méthode "dispatch_once" est la méthode généralement acceptée; Avoir une variété de façons légèrement différentes d'atteindre la même chose n'aide pas vraiment. – gnasher729
Je ne vois pas pourquoi vous ne pourriez pas configurer la classe. Vous pouvez le configurer dans + load, + initialize (avant de créer sharedInstance). Vous pouvez même modifier certaines des propriétés sharedInstance plus tard dans le cycle de vie de l'application, le cas échéant. Peut-être que je ne vous ai tout simplement pas compris et, bien sûr, l'approche de dispatch_once fonctionnera. – aLevelOfIndirection