example singleton swift3

example - Singleton con propiedades en Swift 3



singleton swift 4 (4)

Cualquier inicialización se haría en un método init. No hay diferencia aquí entre un singleton y un no singleton.

En el documento Uso de Swift de Apple con Cocoa y Objective-C (actualizado para Swift 3) dan el siguiente ejemplo del patrón Singleton:

class Singleton { static let sharedInstance: Singleton = { let instance = Singleton() // setup code return instance }() }

Imaginemos que este singleton necesita administrar una matriz variable de cadenas. ¿Cómo / dónde declararía esa propiedad y me aseguraría de que se inicialice correctamente en una matriz [String] vacía?


Para mí esta es la mejor manera, hacer que init sea privado. Sintaxis Swift 3 / 4 / 5

// MARK: - Singleton final class Singleton { // Can''t init is singleton private init() { } // MARK: Shared Instance static let shared = Singleton() // MARK: Local Variable var emptyStringArray = [String]() }


Puede inicializar una matriz vacía como esta.

class Singleton { //MARK: Shared Instance static let sharedInstance : Singleton = { let instance = Singleton(array: []) return instance }() //MARK: Local Variable var emptyStringArray : [String] //MARK: Init init( array : [String]) { emptyStringArray = array } }

O si prefiere un enfoque diferente, este funcionará bien.

class Singleton { //MARK: Shared Instance static let sharedInstance : Singleton = { let instance = Singleton() return instance }() //MARK: Local Variable var emptyStringArray : [String]? = nil //MARK: Init convenience init() { self.init(array : []) } //MARK: Init Array init( array : [String]) { emptyStringArray = array } }