Uso del patrón Singleton con dispatch_once en Swift
¡Hola a todos! Acabo de empezar a aprender Swift y estoy intentando implementar el patrón Singleton para una clase que gestionará la configuración de la aplicación. En Objective-C solía usar `dispatch_once` para garantizar que la inicialización ocurra solo una vez de manera thread-safe. Aquí hay un ejemplo de cómo lo hacía antes:
```objc
+ (instancetype)sharedInstance {
static MyClass *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[MyClass alloc] init];
});
return sharedInstance;
}
```
En Swift veo muchos ejemplos en internet, pero a menudo usan enfoques diferentes: constantes globales, `private init`, estructuras con `static let`. Me confunde que `dispatch_once` en Swift 3+ esté marcado como deprecated. ¿Cómo crear un Singleton correctamente y de forma segura en Swift moderno? ¿Debo preocuparme por la thread-safety? ¿Y por qué Apple recomienda abandonar `dispatch_once` en favor de otros mecanismos?
Ejemplo