viewDidLoad
或viewDidDisappear
上的XCode 4.2调试将以EXC_BAD_ACCESS
它断开该断点但在继续时(“继续执行程序”)它在线程1(0开始)上返回:EXC_BAD_ACCESS(code = 1,address = 0x ....)。这在早期版本中没有发生。
有人得到同样的错误?有人知道如何处理它?
谢谢!
示例代码很简单:
- (void) viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
NSLog(@"View did dissapear");
}
当在断点上调试(与NSLog一致)时,然后点击继续它将在EXC_BAD_ACCESS上结束。如果没有断点那么一切正常。
我正在使用XCode 4.2 Build 4D199(OS X Lion 10.7.2)。使用LLDB调试器。
更新:在所有异常中放置一个中断,它总是在线程8上结束:EXC_BAD_ACCESS - 0x1f43:movl(%ebx),%eax - 第0行:开始....
更新2:玩XCode,我真的不知道为什么但知道它有效。没有代码改变......嗯...奇怪......
答案 0 :(得分:1)
如果覆盖此方法,则必须在实施中的某个时刻调用super。
这是来自文档,我不知道是否是导致你的坏心的问题,但至少你需要修复它。
答案 1 :(得分:1)
您对提供的代码没有多大帮助。
设置malloc_error_break并启用僵尸并查看是否会导致某些内容
答案 2 :(得分:1)
您必须始终在覆盖的所有super
或viewWill...
方法中的某个位置拨打viewDid...
。例如,
- (void) viewDidDisappear:(BOOL)animated {
NSLog(@"View did disapear");
[super viewDidDisappear:animated];
}
答案 3 :(得分:1)
我在viewDidDisappear上收到同样的错误:动画 - 结果我发了一个拼写错误[ self viewDidDisappear:animated];而不是[超级 viewDidDisappear:animated];
简单修复,但一开始并不是很明显。我很惊讶它没有给我一个警告。
答案 4 :(得分:0)
我在这里看到的问题略有不同。在我的情况下(SnowLeopard 10.6.8,XCode 4.2,LLVM 3.0)它停在制动点,但XCode不显示任何调试信息。我可以在GDB中看到我的stackrace很好,但是本地值搞砸了。有趣的是,我尝试使用performSelectorOnMainThread:
它可以恢复XCode调试功能,但有些东西会破坏活动帧值。
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[self performSelectorOnMainThread:@selector(_destroyMarketBrowser) withObject:nil waitUntilDone:YES];
}
顺便说一下:在模拟器中一切正常,问题只发生在真实设备上(5.0.1或5.1 Beta2)