Usando dispatch_once o vars estáticas en una var perezosa

De la guía Swift :

Si una propiedad marcada con el modificador perezoso es accesada por varios hilos simultáneamente y la propiedad aún no se ha inicializado, no hay garantía de que la propiedad se inicializará solo una vez.

Entonces, de eso entiendo que usar

class SomeClass { lazy var someVar: SomeOtherClass = { return SomeOtherClass() }() } 

no es una manera segura para asegurar que todos los que usan la instancia de SomeClass usen la misma instancia de SomeClass().someVar como SomeClass().someVar .

Si ese es el caso, está usando

 class SomeClass { lazy var someVarr: SomeOtherClass = { var some: SomeOtherClass? = nil var token: dispatch_once_t = 0 dispatch_once(&token) { some = SomeOtherClass() } return some! }() } 

o usando:

 class SomeClass { lazy var someVarrr: SomeOtherClass = { struct Static { static let some = SomeOtherClass() } return Static.some }() } 

¿Es la forma correcta, segura de crear instancias de SomeOtherClass?

Para proporcionar un context: En Objective-C, utilicé:

 -(NSURLSession *)ephemeralURLSession { if (!_ephemeralURLSession) { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration]; _ephemeralURLSession = [NSURLSession sessionWithConfiguration:configuration]; }); } return _ephemeralURLSession; } 

y ahora me pregunto cuál es la forma correcta de instanciar NSURLSession en Swift, por ejemplo:

 lazy var ephemeralURLSession: NSURLSession = { var session: NSURLSession? = nil var token: dispatch_once_t = 0 dispatch_once(&token) { let configuration: NSURLSessionConfiguration = NSURLSessionConfiguration.ephemeralSessionConfiguration() session = NSURLSession(configuration: configuration) } return session! }() 

Puedes definirlo así:

 static let ephemeralURLSession: NSURLSession = { let configuration = NSURLSessionConfiguration.ephemeralSessionConfiguration() return NSURLSession(configuration: configuration) }() 

Esto es a la vez flojo y seguro.