【发布时间】:2012-04-14 00:03:30
【问题描述】:
我正在开发一个带有自定义通信层的应用。 我的帮助类依赖 NSURLConnection 来处理与后端的通信。
我遇到了一个随机错误,其中发送了请求,但应用程序没有从我们的服务器得到响应。另外,NSURLConnection 的超时永远不会被触发。
此外,当应用进入此状态时,Mixpanel(一个跟踪器框架)会记录连接错误以及 TestFlight。
如果您终止应用并启动 Safari,您仍然可以访问 google.com。
目前,我们的应用不支持多任务处理。然而,我们发现 TestFlight 正在强制应用“不终止”。
是否有可能由于 TF 库的这种副作用,应用程序会进入不一致的状态……在这种状态下,任何传出连接都会失败?
有人遇到过这样的问题吗?
提前致谢!!
...
作为旁注,我想补充一点,后端已经过检查(托管在亚马逊上),一切似乎都很好。
=======
编辑:
TestFlight 研究员刚刚确认此错误是由他们的库引起的(我在 TF 1.0 beta 版本中遇到了它)。
【问题讨论】:
-
你能在服务器端证明正在发送响应吗?
-
这是一个非常随机的错误。我在这之间花了 6 个小时与 Charles Proxy,但无法触发它。到目前为止,我唯一的提示是 Mixpanel AND TestFlight 记录了连接错误。
-
你如何发送你的 NSURLConnection,同步还是异步?您是从主线程、后台线程还是 NSOperation 还是其他什么地方调用?
-
它应该是异步的。 (我这样初始化它:[[NSURLConnection alloc] initWithRequest:_urlRequest delegate:self startImmediately:YES])。我有断言来防止从后台线程执行,以防万一。没有NSOperation。我曾经有线程安全代码来处理自定义队列(使用 GCD),但我读到这不是一个好主意......所以这是我完成的第一个测试,我已经注释掉了 GCD 代码。这么长的短篇故事,主线,没什么奇怪的。!。谢谢..!!
-
尝试启动连接并立即按下主页按钮。如果问题出在后台模式,这是重现它的唯一方法。
标签: objective-c ios