Делегаты GCDAsyncSocket не вызываются в классе swift, но очень хорошо работают в классе UIViewController. Ниже приведен мой пользовательский код класса, в этом классе функция подключения запустит подключение к сокету, и его делегат никогда не будет вызываться. Я ищу в сети, а также в репозитории GCDAsyncSocket github, но безуспешно.
class RXSocket: NSObject,GCDAsyncSocketDelegate {
func connect() {
let asyncSocket = GCDAsyncSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
do {
try asyncSocket?.connectToHost("www.google.com", onPort: 80)
} catch _ as NSError {
}
}
//MARK:- ASyncSocket Delegate
func socket(sock: GCDAsyncSocket!, didConnectToHost host: String!, port: UInt16) {
print("didConnectToHost")
}
func udpSocket(sock: GCDAsyncUdpSocket!, didReceiveData data: NSData!, fromAddress address: NSData!, withFilterContext filterContext: AnyObject!) {
print("didReceiveData")
}
func socketDidDisconnect(sock: GCDAsyncSocket!, withError err: NSError!) {
print("socketDidDisconnect")
}
}
и в моем классе контроллера представления
let rxSocket = RXSocket()
rxSocket.connect()