From 44de79d8c58a60bd6e0aaa72d21e88e0ac515395 Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 15 Feb 2015 18:51:43 -0500 Subject: [PATCH] dispatch events on main queue --- SwiftIO/SocketIOClient.swift | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/SwiftIO/SocketIOClient.swift b/SwiftIO/SocketIOClient.swift index 523e6dc..6065018 100644 --- a/SwiftIO/SocketIOClient.swift +++ b/SwiftIO/SocketIOClient.swift @@ -248,23 +248,25 @@ class SocketIOClient: NSObject, SRWebSocketDelegate { func handleEvent(event:String, data:AnyObject?, isInternalMessage:Bool = false, wantsAck ack:Int? = nil, withAckType ackType:Int = 3) { // println("Should do event: \(event) with data: \(data)") - if !self.connected && !isInternalMessage { - return - } - - for handler in self.handlers { - if handler.event == event { - if data is NSArray { - handler.executeCallback(nil, items: (data as! NSArray)) - if ack != nil { - self.emitAck(ack!, withEvent: event, - withData: handler.ack.ackData, withAckType: ackType) - } - } else { - handler.executeCallback(data) - if ack != nil { - self.emitAck(ack!, withEvent: event, - withData: handler.ack.ackData, withAckType: ackType) + dispatch_async(dispatch_get_main_queue()) { + if !self.connected && !isInternalMessage { + return + } + + for handler in self.handlers { + if handler.event == event { + if data is NSArray { + handler.executeCallback(nil, items: (data as! NSArray)) + if ack != nil { + self.emitAck(ack!, withEvent: event, + withData: handler.ack.ackData, withAckType: ackType) + } + } else { + handler.executeCallback(data) + if ack != nil { + self.emitAck(ack!, withEvent: event, + withData: handler.ack.ackData, withAckType: ackType) + } } } }