fix socketio/socket.io-client-swift#133 can't expose variadics to objective-c
This commit is contained in:
parent
2579c04f67
commit
06e2311acc
@ -29,19 +29,34 @@ private func emitAckCallback(socket: SocketIOClient?, num: Int?)
|
||||
socket?.emitAck(num ?? -1, withData: items)
|
||||
}
|
||||
|
||||
private func emitAckCallbackObjectiveC(socket: SocketIOClient?, num: Int?)
|
||||
(items: NSArray) -> Void {
|
||||
socket?.emitAck(num ?? -1, withData: items as [AnyObject])
|
||||
}
|
||||
|
||||
struct SocketEventHandler {
|
||||
let event: String
|
||||
let callback: NormalCallback
|
||||
let callback: NormalCallback?
|
||||
let callBackObjectiveC: NormalCallbackObjectiveC?
|
||||
|
||||
init(event: String, callback: NormalCallback) {
|
||||
self.event = event
|
||||
self.callback = callback
|
||||
self.callBackObjectiveC = nil
|
||||
}
|
||||
|
||||
func executeCallback(items: NSArray? = nil, withAck ack: Int? = nil, withAckType type: Int? = nil,
|
||||
init(event: String, callback: NormalCallbackObjectiveC) {
|
||||
self.event = event
|
||||
self.callback = nil
|
||||
self.callBackObjectiveC = callback
|
||||
}
|
||||
|
||||
func executeCallback(items: [AnyObject]? = nil, withAck ack: Int? = nil, withAckType type: Int? = nil,
|
||||
withSocket socket: SocketIOClient? = nil) {
|
||||
dispatch_async(dispatch_get_main_queue()) {
|
||||
self.callback(items, emitAckCallback(socket, num: ack))
|
||||
self.callback != nil ?
|
||||
self.callback?(items, emitAckCallback(socket, num: ack))
|
||||
: self.callBackObjectiveC?(items, emitAckCallbackObjectiveC(socket, num: ack))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -426,6 +426,13 @@ public final class SocketIOClient: NSObject, SocketEngineClient, SocketLogClient
|
||||
let handler = SocketEventHandler(event: event, callback: callback)
|
||||
handlers.append(handler)
|
||||
}
|
||||
|
||||
public func onObjectiveC(event: String, callback: NormalCallbackObjectiveC) {
|
||||
SocketLogger.log("Adding handler for event: %@", client: self, args: event)
|
||||
|
||||
let handler = SocketEventHandler(event: event, callback: callback)
|
||||
handlers.append(handler)
|
||||
}
|
||||
|
||||
/**
|
||||
Removes all handlers.
|
||||
|
||||
@ -26,5 +26,7 @@ import Foundation
|
||||
|
||||
public typealias AckCallback = (NSArray?) -> Void
|
||||
public typealias AckEmitter = (AnyObject...) -> Void
|
||||
public typealias AckEmitterObjectiveC = (NSArray) -> Void
|
||||
public typealias NormalCallback = (NSArray?, AckEmitter?) -> Void
|
||||
public typealias NormalCallbackObjectiveC = (NSArray?, AckEmitterObjectiveC?) -> Void
|
||||
public typealias OnAckCallback = (timeoutAfter: UInt64, callback: AckCallback) -> Void
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user