没有在swift类中调用AsyncSocket回调

6 delegates ios cocoaasyncsocket swift

GCDAsyncSocket委托不在swift类中调用,但在UIViewController类中工作得很好.下面是我的自定义类代码,在这个类中,connect函数将启动套接字连接,它的委托将永远不会被调用.我在网上搜索,也在GCDAsyncSocket github repo上搜索但没有成功.

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")
}

}
Run Code Online (Sandbox Code Playgroud)

并在我的视图控制器类

    let rxSocket = RXSocket()
    rxSocket.connect()
Run Code Online (Sandbox Code Playgroud)

Wil*_* XJ 0

尝试这样:

class RXSocket: NSObject,GCDAsyncSocketDelegate {
var asyncSocket: GCDAsyncSocket!
    func connect() {

    self.asyncSocket = GCDAsyncSocket(delegate: self, delegateQueue: DispatchQueue.main)

    do {
        try asyncSocket.connect(toHost: "www.google.com", onPort: 80)
    } catch _ as NSError {
        print("Catch")
    }
    }
}
Run Code Online (Sandbox Code Playgroud)