首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iphone :带有NSURLConnection的随机NSURLConnection

iphone :带有NSURLConnection的随机NSURLConnection
EN

Stack Overflow用户
提问于 2010-09-15 12:16:11
回答 2查看 2.8K关注 0票数 2

有时,我会收到关于EXC_BAD_ACCESS和NSURLConnection的崩溃报告(根据崩溃报告,我猜这是关于NSURLConnection的)。

我在StackOverflow上发现了一个类似报告的问题,但是没有什么帮助:/ (NSURLConnection causes bad access crash);我试着用NSZombieEnabled运行这个应用程序,但是由于这个问题真的是“随机的”,所以在使用NSZombieEnabled :/ /运行时,我从来没有得到过它。

有人有线索吗?

非常感谢:)

下面是一篇报告:

代码语言:javascript
复制
Thread 3 Crashed:
0   libobjc.A.dylib                0x0000286c objc_msgSend + 16
1   CoreFoundation                 0x0000325c CFEqual + 92
2   CoreFoundation                 0x000b081c __CFBasicHashStandardEquateKeys + 12
3   CoreFoundation                 0x000b2578 ___CFBasicHashFindBucket_Linear + 216
4   CoreFoundation                 0x00002ff8 CFBasicHashFindBucket + 220
5   CoreFoundation                 0x00002ec6 CFDictionaryGetValue + 50
6   CFNetwork                      0x0005853a HTTPMessage::copyConstantHeaderFieldValue(unsigned int) const + 26
7   CFNetwork                      0x00090024 URLRequest::copyConstantHeaderFieldValue(unsigned int) const + 20
8   CFNetwork                      0x0008ce0e HTTPProtocol::getCacheStoragePolicy(__CFHTTPMessage*) + 158
9   CFNetwork                      0x0008e6c8 HTTPProtocol::updateForHeader(__CFHTTPMessage*) + 492
10  CFNetwork                      0x0008f73c HTTPProtocol::performHeaderRead() + 368
11  CFNetwork                      0x0008fbea HTTPProtocol::httpReadStreamEvent(unsigned long) + 110
12  CFNetwork                      0x0008fd34 HTTPProtocol::_httpReadStreamCB(__CFReadStream*, unsigned long, void*) + 4
13  CoreFoundation                 0x0004985e _signalEventSync + 70
14  CoreFoundation                 0x000497f2 _cfstream_shared_signalEventSync + 198
15  CoreFoundation                 0x00071a86 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 6
16  CoreFoundation                 0x000736ac __CFRunLoopDoSources0 + 188
17  CoreFoundation                 0x00074504 __CFRunLoopRun + 224
18  CoreFoundation                 0x0001d8e4 CFRunLoopRunSpecific + 224
19  CoreFoundation                 0x0001d7ec CFRunLoopRunInMode + 52
20  Foundation                     0x0003b71e +[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:] + 206
21  Foundation                     0x0000bc96 -[NSThread main] + 38
22  Foundation                     0x000909da __NSThread__main__ + 966
23  libSystem.B.dylib              0x0007a986 _pthread_start + 242
24  libSystem.B.dylib              0x000700e4 thread_start + 0

更新

我终于在NSZombieEnabled运行时得到了错误.但是这没有多大帮助。

下面是回溯:

代码语言:javascript
复制
[Switching to thread 13059]
Program received signal:  “EXC_BAD_ACCESS”.
[Switching to thread 13059]
(gdb) bt
#0  0x3090ce9c in CFDictionaryGetValue ()
#1  0x35233540 in HTTPMessage::copyConstantHeaderFieldValue ()
#2  0x3526b02a in URLRequest::copyConstantHeaderFieldValue ()
#3  0x35267e14 in HTTPProtocol::getCacheStoragePolicy ()
#4  0x352693e2 in HTTPProtocol::attemptToCacheMovedPermanently ()
#5  0x3526a6c8 in HTTPProtocol::performHeaderRead ()
#6  0x3526abf0 in HTTPProtocol::httpReadStreamEvent ()
#7  0x3526ad3a in HTTPProtocol::_httpReadStreamCB ()
#8  0x30953864 in _signalEventSync ()
#9  0x309537f8 in _cfstream_shared_signalEventSync ()
#10 0x3097ba8c in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#11 0x3097d6b2 in __CFRunLoopDoSources0 ()
#12 0x3097e50a in __CFRunLoopRun ()
#13 0x309278ea in CFRunLoopRunSpecific ()
#14 0x309277f2 in CFRunLoopRunInMode ()
#15 0x3148b724 in +[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:] ()
#16 0x3145bc9c in -[NSThread main] ()
#17 0x314e09e0 in __NSThread__main__ ()
#18 0x3129298c in _pthread_start ()
#19 0x312880ec in thread_start ()
(gdb) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-16 09:08:30

好的,我找到了解决办法/问题。

我的代码很好,问题的根源是我试图使用这些NSURLConnections从我的网站上获取图片。但是我们的SEO家伙改变了图像urls,所以我已经重定向了请求。

NSURLConnection不太喜欢重定向请求。

谢谢你帮忙!

票数 3
EN

Stack Overflow用户

发布于 2010-09-15 12:26:46

我不确定是否有足够的信息来提供更多的帮助:

首先,一定要坚持NSZombie的--我相信你迟早会做到的。一定要检查控制台的输出,有一个很小的可能性,那就是nszombie抛出的异常可能会在某个地方被捕获和忽略。

除此之外,再检查一下你用内存做的每一件事。确保在释放之前取消了请求,确保您不会意外地用另一个请求覆盖指向正在运行的请求的指针,确保不会过度释放传递给请求的任何对象。

最后一个可能解决或不解决问题的建议是尝试ASIHTTPRequest:

http://allseeing-i.com/ASIHTTPRequest/

它可以完成NSURLConnection所能做的一切(另外还有很多有用的事情),如果仍然会发生崩溃,那么至少可以获得源代码,这样您就可以获得更多关于错误所在的信息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3717475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档