GCDAsyncSocket-Delegaten werden nicht in der swift-Klasse aufgerufen, funktionieren aber in der UIViewController-Klasse sehr gut. Unten ist mein benutzerdefinierter Klassencode, in dieser Klasse wird die Verbindungsfunktion die Socket-Verbindung starten und der Delegat wird nie aufgerufen. Ich suche im Netz und auch auf GCDAsyncSocket Github Repo aber keinen Erfolg.AsyncSocket-Callbacks, die nicht in einer Swift-Klasse aufgerufen werden
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")
}
}
und meiner Ansicht Controller-Klasse
let rxSocket = RXSocket()
rxSocket.connect()
versuchen, @objc für jeden Delegaten func hinzuzufügen, auch brauchen Sie eine starke Referenz zu verweisen oder es wird –
versucht werden, aber kein Glück. –
Überprüfen Sie den ersten Kommentar Ich bearbeite nur –