一个前同事给我留下了一个我现在必须维护的iOS项目。该应用程序的任务是通过套接字连接不断获取数据,效果很好。 但是,客户抱怨该应用程序将在某个时候停止传送数据。我怀疑如果设备在短时间内失去WLAN连接,就会发生这种情况。实际上,该应用程序随后应建立一个新连接,不幸的是,该连接不起作用。建立连接的代码如下:
- (void)initSocketConnection
{
CFReadStreamRef readStreamRef = nil;
CFWriteStreamRef writeStreamRef = nil;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)CFBridgingRetain(config.host), config.port, &readStreamRef, &writeStreamRef);
if(CFWriteStreamOpen(writeStreamRef) == true)
{
if(CFReadStreamOpen(readStreamRef) == true)
{
…
我通过禁用设备上的WLAN并等待直到应用程序不再接收任何数据来模拟行为。然后,我再次激活WLAN。发生错误时,将反复调用initSocketConnection方法。但是,调用if(CFWriteStreamOpen(writeStreamRef)== true)时,我得到了BAD_ACCESS代码2。即使尝试了几分钟,错误也不会改变。如果我重新启动该应用程序,它将立即再次获取数据。
可能是什么问题? 似乎该应用无法建立新的连接。 还是我模拟问题的方式错误?