Utilisation de dispatch_once pour créer un singleton en Swift : comment faire correctement ?
Bonjour à tous ! Je viens de commencer à apprendre Swift après Objective-C, et j'ai un problème avec l'implémentation du pattern singleton. En Objective-C, j'avais l'habitude d'utiliser dispatch_once pour garantir que l'initialisation n'ait lieu qu'une seule fois, même dans un environnement multithread. Par exemple :
```
+ (instancetype)sharedInstance {
static MyClass *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[MyClass alloc] init];
});
return sharedInstance;
}
```
Maintenant, j'essaie de faire la même chose en Swift. J'ai lu qu'en Swift, il y a les propriétés let et static qui sont thread-safe par défaut. Mais je ne comprends pas bien comment cela fonctionne. J'ai essayé d'écrire ceci :
```
class MyClass {
static var shared: MyClass {
dispatch_once_t onceToken
dispatch_once(&onceToken) {
// ...
}
}
}
```
Mais Xcode se plaint que dispatch_once n'est pas disponible en Swift. J'ai vu qu'en Swift 3, il a été complètement...
No answers yet.
Connectez-vous pour laisser une réponse
Blogs
Salaires des développeurs PHP en Russie : aperçu du marché 2025