HTTP Long Polling en Swift

Estoy intentando implementar una solución de sondeo largo en Swift usando iOS 8+.

Si bien la solución, sin duda, funciona y deja el hilo principal libre para las interacciones de interfaz de usuario, el uso de la memory escala continuamente y obviamente estoy haciendo algo mal. La class que he escrito es la siguiente:

enum LongPollError:ErrorType{ case IncorrectlyFormattedUrl case HttpError } public class LongPollingRequest: NSObject { var GlobalUserInitiatedQueue: dispatch_queue_t { return dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.rawValue), 0) } var GlobalBackgroundQueue: dispatch_queue_t { return dispatch_get_global_queue(Int(QOS_CLASS_BACKGROUND.rawValue), 0) } var longPollDelegate: LongPollingDelegate var request: NSURLRequest? init(delegate:LongPollingDelegate){ longPollDelegate = delegate } public func poll(endpointUrl:String) throws -> Void{ let url = NSURL(string: endpointUrl) if(url == nil){ throw LongPollError.IncorrectlyFormattedUrl } request = NSURLRequest(URL: url!) poll() } private func poll(){ dispatch_async(GlobalBackgroundQueue) { self.longPoll() } } private func longPoll() -> Void{ autoreleasepool{ do{ let urlSession = NSURLSession.shanetworkingSession() let dataTask = urlSession.dataTaskWithRequest(self.request!, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in if( error == nil ) { self.longPollDelegate.dataReceived(data) self.poll() } else { self.longPollDelegate.errorReceived() } }) dataTask.resume() } } } } 

He intentado perfilar la aplicación en Instruments, pero los resultados son confusos. Espero que alguien pueda apuntarme en la dirección correcta.

Gracias

LongPollDelegate es fuerte por lo que tiene un ciclo de retención. Que sea una variable débil.