Avatar ·

Usando o padrão Singleton com dispatch_once em Swift

Olá a todos! Comecei a estudar Swift recentemente e estou tentando implementar o padrão Singleton para uma classe que gerenciará as configurações do aplicativo. Em Objective-C, eu costumava usar `dispatch_once` para garantir que a inicialização ocorresse apenas uma vez de forma thread-safe. Aqui está um exemplo de como eu fazia antes: ```objc + (instancetype)sharedInstance { static MyClass *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[MyClass alloc] init]; }); return sharedInstance; } ``` Em Swift, vejo muitos exemplos na internet, mas eles frequentemente usam abordagens diferentes: constantes globais, `private init`, structs com `static let`. Fico confuso porque `dispatch_once` no Swift 3+ está marcado como deprecated. Como criar um Singleton corretamente e com segurança no Swift moderno? Preciso me preocupar com thread safety? E por que a Apple recomenda abandonar o `dispatch_once` em favor de outros mecanismos? Exemplo