【发布时间】:2016-06-02 12:49:40
【问题描述】:
GCDAsyncSocket 委托在 swift 类中没有被调用,但在 UIViewController 类中工作得很好。下面是我的自定义类代码,在这个类中连接函数将启动套接字连接,它的委托永远不会被调用。我在网上搜索,也在 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")
}
}
在我的视图控制器类中
let rxSocket = RXSocket()
rxSocket.connect()
【问题讨论】:
-
尝试为每个委托函数添加@objc,你也需要一个强引用来引用,否则它将被释放
-
试过但没有成功。
-
查看我刚刚编辑的第一条评论
-
在swift中,我不知道如何制作强大的参考。请提出建议。
-
这个问题你解决了吗?
标签: ios swift delegates cocoaasyncsocket