13

我找不到解决此问题的适当方法。我想有人可以帮我清除这个错误。

摘要: 当我使用 3G 连接在设备上测试我的应用程序时,当控制台"purgeIdleCellConnections: found one to purge conn = 0x1ddde360"多次显示此错误时,它以不同的 number 出现(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!——有状态的]、流水线、各种缓存限制等等)。当与缓存条目关联的连接完成所有请求的运行时,它会在缓存条目的队列中查找更多工作;如果找不到任何连接,则连接空闲。如果连接空闲时间过长,

这种缓存实现在 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 连接。如果您的网络出现问题,您需要调查连接空闲的原因。

4

2 回答 2

2

在使用 AdMob 中介 SDK 时,在运行 iOS 6.0.1 (iPhone 3GS) 的设备上看到了这一点。应用程序本身与服务器建立了 100 多个连接(下一个服务器 API 将解决该问题),但这些控制台日志消息仅在 AdMob 连接激活后才开始出现。3G 和 Wifi(10M 连接)。

最好的猜测是,iOS 不乐意从两个不同的网络库(在本例中为 AdMob)获得网络调用,但我想它可能是任何东西。只是巧合。

有时应用程序完全卡住,有时没有明显的问题。很想解决这个问题,但到目前为止还没有找到任何东西......

于 2012-11-21T09:31:22.963 回答
0

在连接到蜂窝网络的设备上,我观察到这条调试消息来自 iOS 6.0 SDK。时间方面,我发现它与在我的应用程序中被终止的“活动”AJAX 调用相关。然而,证明任何事情都非常困难,因为这只发生在 UIWebView 中呈现网页时。我只是说我不认为这些信息是良性的。我认为它们可能表明 Apple 框架中的一个错误,该错误在终止连接时过于激进。很难对在 UIWebView 内运行的、进行 AJAX 调用的 javascript 进行检测,因此目前这一切都是高度推测性的。

于 2012-11-20T21:20:48.200 回答