为啥使用 dispatch_async() 方法时 AsyncSocket 无法连接到主机?

Posted

技术标签:

【中文标题】为啥使用 dispatch_async() 方法时 AsyncSocket 无法连接到主机?【英文标题】:Why AsyncSocket can't connect to host when using dispatch_async() method?为什么使用 dispatch_async() 方法时 AsyncSocket 无法连接到主机? 【发布时间】:2015-04-20 03:00:39 【问题描述】:

我在使用 dispatch_async 方法来使用 AsyncSocket 时有点困惑。 这是我的代码

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
    _socket = [[AsyncSocket alloc] initWithDelegate:self];
    [_socket connectToHost:@"192.168.1.122" onPort:9501 error:nil];
    [self sendCurrentLocation];
);

我使用此代码进行连接,但它不起作用,事件- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err 未被调用。 有人知道为什么吗?谢谢。

附言原谅我的英语。

【问题讨论】:

【参考方案1】:

AsyncSocket 数据传输是异步的,它是把数据放在队列中,使用线程发送,所以我们不需要再异步做一遍。

【讨论】:

以上是关于为啥使用 dispatch_async() 方法时 AsyncSocket 无法连接到主机?的主要内容,如果未能解决你的问题,请参考以下文章

为啥@autoreleasepool 不起作用

如何在目标 c 中使用 GCD dispatch_async 调用/编写以下方法

在 dispatch_async 中调用委托方法

尝试将 dispatch_async 与 cocos2d 函数一起使用时出错

dispatch_async 与 NSOperation 队列

将 dispatch_async 与 self 一起使用