GCDAsyncSocket delegates do not call swift in the class, but work fine in the UIViewController class. Below is my custom class code, in this class the connection function will start connecting sockets, and the delegate is never called. I search on the net as well as in the GCDAsyncSocket github repo, but have not succeeded.
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 {
}
}
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")
}
}
and, in my opinion, the controller class
let rxSocket = RXSocket()
rxSocket.connect()
user2021205
source
share