2010-10-10 90 views
3

我想弄清楚是什么导致这次崩溃。我已经构建了应用程序并将其提供给我们的测试人员,但我们似乎无法可靠地重现此应用程序。它只是有时发生...在NSURLConnection中崩溃的应用程序

Thread 0 Crashed: 
0 libobjc.A.dylib    0x000027da objc_msgSend + 18 
1 Foundation      0x00032896 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 62 
2 Foundation      0x00032818 _NSURLConnectionDidFinishLoading + 72 
3 CFNetwork      0x00010dd8 URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue*) + 160 
4 CFNetwork      0x00004ad4 URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) + 96 
5 CFNetwork      0x000049c4 URLConnectionClient::processEvents() + 64 
6 CFNetwork      0x00004976 URLConnection::multiplexerClientPerform(RunLoopMultiplexer*) + 30 
7 CFNetwork      0x000048f4 MultiplexerSource::perform() + 120 
8 CFNetwork      0x00004872 MultiplexerSource::_perform(void*) + 2 
9 CoreFoundation     0x00055f1e __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 6 
10 CoreFoundation     0x00027ba0 __CFRunLoopDoSources0 + 376 
11 CoreFoundation     0x00027444 __CFRunLoopRun + 224 
12 CoreFoundation     0x00027270 CFRunLoopRunSpecific + 224 
13 CoreFoundation     0x00027178 CFRunLoopRunInMode + 52 
14 GraphicsServices    0x000045ec GSEventRunModal + 108 
15 GraphicsServices    0x00004698 GSEventRun + 56 
16 UIKit       0x0000411c -[UIApplication _run] + 396 
17 UIKit       0x00002128 UIApplicationMain + 664 
18 myapp       0x000020d8 main (main.m:14) 
19 myapp       0x0000208c start + 32 

任何意见将不胜感激。该应用程序使用SDK 4.1在XCode 3.2.4中构建。

干杯......

回答

1

本有一些合理的建议。打开NSZombieEnabled。

我几乎可以100%肯定地告诉你它正在崩溃,因为当代理试图发送消息时你有一个零对象。

事实上,它只是有时崩溃,告诉我,你可能使用autorelease。 Autorelease不会在同一时间递减保留计数,所以有时您的对象在获取委托消息和应用程序时仍然处于活动状态。但是,有时候这个对象会被释放,并且应用程序崩溃。

+0

崩溃是因为对象被释放,然后内存被回收。在我的代码中,我试图调用委托respondsToSelector:但现在委托实际上是一些不采用NSObject协议的原始类型,因此无法处理消息。 – nicktmro 2010-10-11 18:43:20

2

我会尝试打开NSZombieEnabled,看看是否能在这个问题上揭示任何光线。连接的委托是否仍然有效?

+0

你知道,这真的应该是一个评论。 – 2010-10-10 22:59:45

+0

谢谢你们,事情是这个崩溃发生在人们的设备上,而不是在模拟器中...... – nicktmro 2010-10-10 23:10:16

+0

僵尸检测可能仍然有帮助。正如Ben所说,它看起来像NSURLConnection的委托不再有效。 – 2010-10-10 23:20:28