Cómo crear singleton con parámetro en swift:

Tengo la siguiente class:

class FeedDataManager: URLManagerdelegate { let TAG: String = "FeedDataManager" weak var mDelegate: KeyboardViewController? var mModelManager: ModelManager! var mURLManager: UrlManager! var mGetNewsTimer: NSTimer? var mFeedsArray: Array<News>! var mManagedObjectContext: NSManagedObjectContext! var mPersistentStoreCoordinator: NSPersistentStoreCoordinator! var mManagedObjectModel: NSManagedObjectModel! class var shanetworkingInstance: FeedDataManager { struct Static { static var onceToken: dispatch_once_t = 0 static var instance: FeedDataManager? = nil } dispatch_once(&Static.onceToken) { Static.instance = FeedDataManager() } return Static.instance! } init (aDelegate: KeyboardViewController) { self.mDelegate = aDelegate } } 

El problema: si miras el método init verás que debería recibir como parámetro un puntero de delegado que quiero almacenar en el singleton, así que básicamente necesito pasar este parámetro a esta línea:

 Static.instance = FeedDataManager() 

Pero no tengo idea de cómo se hace, ¿Alguien sabe cómo se puede hacer esto?

BTW: vi este enlace: Singleton e init con el parámetro Pero la creación de singleton allí es diferente.

Podemos mostrarle cómo puede agregar parameters a la statement de singleton, pero esa no es una buena idea. La idea completa detrás de un singleton es que no importa dónde se instanció, puedes usarlo en cualquier lugar. ¿Qué significa si invocaste este singleton en dos lugares diferentes en tu código, con diferentes parameters? Tiene una condición de carrera, donde el comportamiento puede cambiar dependiendo de dónde y cómo se encontró por primera vez.

No relacionado, pero el dispatch_once es networkingundante. Las variables static ya se emplean con dispatch_once . Consulte la discusión al final de http://developer.apple.com/swift/blog/?id=7 (esto está principalmente orientado hacia los globals, pero como señalan parenthetically, también se aplica a las variables static ). Además, en Swift 1.2, ahora podemos tener variables de class estáticas, eliminando también la necesidad de la struct