概要:
当我使用3G连接在设备上测试我的应用程序时,控制台显示此错误“purgeIdleCellConnections:找到一个以清除conn = 0x1ddde360”一次以上时,会发生不同的数字(0x1ddde360或0x21b98a60或..) ..).有时它挂起,应用程序崩溃死亡.我无法打开应用程序我必须删除并重新生成.当我使用Wi-Fi它工作正常:没有任何问题.
实际结果:
我在我的应用程序中使用Web服务(WSDL).在启动应用程序本身时,我打电话给多个Web服务.这个应用程序已经在App Store(Promayarnlite)中,但该文件是使用IOS 5.1 SDK构建的,所以它工作正常.现在我将Xcode更新为4.5.1和IOS 6 SDK,所以我想在App Store中更新我的应用程序.我正在努力与这部分.
编辑:A:内部NSURLConnection维护一个连接缓存.每个缓存条目表示一组到主机的持久HTTP连接.当新的请求进入时,它在缓存中的条目上排队.这可能是现有条目,也可能是新条目,并且还可能会在该条目内生成新的HTTP连接,具体取决于各种复杂因素(保护空间,认证状态(在认证方法的情况下) – 是,我在看你,NTLM! – 有状态的,流水线,各种缓存限制等).当与缓存条目关联的连接完成其所有请求的运行时,它会在缓存条目的队列上查找更多的工作;如果没有找到任何连接空闲.如果连接空闲时间过长,则会清除连接(关闭底层TCP连接).
iOS 6中的这种缓存实现已经改变.在iOS 6之前,有一种清除空闲缓存条目的机制,Mac OS X和iOS的超时时间(30秒,6秒,iOS值可能低至旧版iOS上3秒).在iOS 6中,现在有两种清除空闲缓存条目的机制,一种适用于在WWAN上运行的连接,另一种适用于所有其他连接. WWAN超时已经恢复到传统的值(3秒),而所有其他连接超时已经被触发到旧的Mac OS X默认值(30秒).
当您清除WWAN连接时,会生成您看到的日志消息. iOS 5.x中不存在此日志消息,这就解释了您在测试中看不到的原因.然而,在所有版本的iOS上,基本机制以一种或另一种形式存在.
这个消息更可能是一个症状,而不是一个原因.具体来说,该消息仅适用于空闲连接;这只是NSURLConnection清理持久的HTTP连接,没有任何有用的东西.如果您的网络出现问题,您需要调查连接正在闲置的原因.