我无法找到解决此问题的正确方法。我想有人可以帮我清除这个错误。
要点:
当我使用3G连接在设备上测试我的应用时,当控制台多次显示此错误"purgeIdleCellConnections: found one to purge conn = 0x1ddde360"
时,它会以不同的数字(0x1ddde360 or 0x21b98a60 or....)
发生。有时它挂起,应用程序崩溃并死亡。我无法打开应用程序。我必须删除并重新构建。当我使用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连接,这些连接没有做任何有用的事情。如果您的网络出现问题,您需要调查连接闲置的原因。
答案 0 :(得分:2)
在使用AdMob Mediation SDK时,在运行iOS 6.0.1 (iPhone 3GS)的设备上看到此。应用程序本身与服务器建立了100多个连接(下一个服务器API将解决该问题),但这些控制台日志消息仅在AdMob连接激活后才开始出现。 3G和Wifi(10M连接)。
最好的猜测是iOS不喜欢从两个不同的网络库获取网络电话 - 在这种情况下是AdMob,但我想它可能是任何东西。只是巧合。
有时app会完全卡住,有时候没有明显的问题。很想解决这个问题,但到目前为止还没找到任何东西......
答案 1 :(得分:0)
当连接到蜂窝网络的设备上时,我观察到这个调试消息来自iOS 6.0 SDK。时间方面,我发现它与“活跃”相关联。 AJAX调用在我的应用程序中终止。然而,要证明任何事情是非常困难的,因为只有在UIWebView中呈现网页时才会出现这种情况。我只是说我不认为这些信息是良性的。我认为它们可能表明Apple框架中的一个错误,它在终止连接方面过于激进。很难在UIWebView中运行的javascript上进行AJAX调用,因此目前它都是高度推测的。