iphone – respondsToSelector发送到解除分配的对象

iphone – respondsToSelector发送到解除分配的对象,第1张

概述如果我向NS XML Parser发送错误的URL,我会尝试找出我的应用程序崩溃的原因(RSS阅读器).我有一个EXC_BAD_ACCESS.所以经过一些搜索我发现我必须使用Zombies.所以我在环境中添加了以下参数: CFZombieLevel = 3NSMallocStaclLogging = YESNSDeallocateZombies = NOMallocStackLoggingN 如果我向NS XML Parser发送错误的URL,我会尝试找出我的应用程序崩溃的原因(RSS阅读器).我有一个EXC_BAD_ACCESS.所以经过一些搜索我发现我必须使用ZombIEs.所以我在环境中添加了以下参数:

CFZombIELevel = 3NSMallocStaclLogging = YESNSDeallocateZombIEs = NOMallocStackLoggingNoCompact = YESNSZombIEEnabled = YESNSDeBUGEnabled = YESNSautoreleaseFreedobjectCheckEnabled = YES

我还将malloc_error_break添加为断点.然后我在GUI中添加了一些其他断点并按下了Build和DeBUG.在控制台中,我收到以下消息:

2010-08-28 18:41:49.761 RSSReader [2850:207] *** – [XMLParser respondsToSelector:]:发送到解除分配的实例0x59708e0的消息

有时我也会收到以下消息:
wait_fences:未收到回复:10004003

如果我输入“shell malloc_history 2850 0x59708e0”,我会得到以下内容:

...ALLOC 0x5970870-0x59709d7 [size=360]: thread_a0aaa500 |start | main | UIApplicationMain | -[UIApplication _run] | CFRunLoopRunInMode | CFRunLoopRunspecific | __CFRunLoopRun | __CFRunLoopDoSource1 | __CFRUNLOOP_IS_CALliNG_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ | PurpleEventCallback | _UIApplicationHandleEvent | -[UIApplication sendEvent:] | -[UIApplication handleEvent:withNewEvent:] | -[UIApplication _runWithURL:payload:launchOrIEntation:statusbarStyle:statusbarHIDden:] | -[UIApplication...----FREE  0x5970870-0x59709d7 [size=360]: thread_a0aaa500 |start | main | UIApplicationMain | -[UIApplication _run] | CFRunLoopRunInMode | CFRunLoopRunspecific | __CFRunLoopRun | __CFRunLoopDoSource1 | __CFRUNLOOP_IS_CALliNG_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ | PurpleEventCallback | _UIApplicationHandleEvent | -[UIApplication sendEvent:] | -[UIApplication handleEvent:withNewEvent:] | -[UIApplication...ALLOC 0x59708e0-0x597090f [size=48]: thread_a0aaa500 |start | main | UIApplicationMain | -[UIApplication _run] | CFRunLoopRunInMode | CFRunLoopRunspecific | __CFRunLoopRun | __CFRunLoopDoSource1 | __CFRUNLOOP_IS_CALliNG_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ | PurpleEventCallback | _UIApplicationHandleEvent | -[UIApplication sendEvent:] | -[UIApplication handleEvent:withNewEvent:] | -[UIApplication _runWithURL:payload:launchOrIEntation:statusbarStyle:statusbarHIDden:] | -[UIApplication ... Binary Images:    0x1000 -     0x6ff3 +RSSReader ??? (???) <6EBB16BC-2BCE-CA3E-C76E-F0B078995E2D> /Users/svp/library/Application Support/iPhone Simulator/4.0.1/Applications/AF4CE7CA-88B6-44D4-92A1-F634DE7B9072/RSSReader.app/RSSReader    0xe000 -   0x1cfff3 +Foundation 751.32.0 (compatibility 300.0.0) <18F9E1F7-27C6-2B64-5B9D-BAD16EE5227A>...

这是什么意思?我怎么知道0x59708e0是哪个对象?我找不到导致我的应用崩溃的代码.我唯一知道的是它应该是一个respondsToSelector消息.我在所有的respondsToSelector消息中添加了一个断点.他们被击中,但应用程序在那时没有崩溃.我还尝试将它们评论出来,除了一个并且还让应用程序崩溃.未被评论的那个没有被击中.我在哪里有内存泄漏?

下一个令人困惑的事情是NSXML Parser继续其工作,尽管调用了parseErrorOccurred委托.两次抛出错误后,应用程序崩溃了.

为什么僵尸在Run with Peformance Tool中被禁用?

编辑:

现在我使用了这个指令(无法发布.对不起.垃圾邮件预防)我得到了这个工作.结果如下:http://yfrog.com/mrzombievp那么这是什么意思?

@Graham:
在我的解析器类中,我实例化了NSXMLParser:

- (voID)connectionDIDFinishLoading:(NSURLConnection *)connection {          ...     NSXMLParser *RSSParser = [[NSXMLParser alloc] initWithData:responseData];      [RSSParser setDelegate:self];        ...    [RSSParser parse];    //[RSSParser release];}

在我搜索错误期间,我注释了释放方法.目前RSSParser永远不会在解析器类中发布.

在我的RootVIEwController类中,我实例化了我的解析器:

- (voID)loadData {    if (newsItems == nil) {        [activityIndicator startAnimating];          XMLParser *RSSParser = [[XMLParser alloc] init];          [RSSParser parseRSSFeed:@"http://Feeds2.Feedburner.com/TheMdnShowtest" withDelegate:self];          [RSSParser release];        RSSParser = nil;    } else {          [self.tableVIEw reloadData];      }  }

如果我不在这里发布它,它不会崩溃.但是对于每个alloc,我必须发布一个版本?或者我应该在connectionDIDFinishLoading中自动释放NSXMLParser?

解决方法 当你使用Memory Leaks时,ZombIE被禁用,因为所有ZombIEs都会被泄漏信号.要运行ZombIE工具,您可以转到“仪器”菜单并执行“文件”>“新建”并单独选择“僵尸”工具,这样,如果僵尸收到消息,程序将停止,并且您将在d出的小d出窗口中获得链接到那个僵尸对象及其历史 总结

以上是内存溢出为你收集整理的iphone – respondsToSelector发送到解除分配的对象全部内容,希望文章能够帮你解决iphone – respondsToSelector发送到解除分配的对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1009848.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存