我按照this answer跟踪我的应用 EXC_BAD_ACCESS 。是的,我有一个僵尸物体。当我试图弄清楚我的代码哪一行出错时,我发现所有负责任的图书馆都是基础。
当我试图这样做时:
双击任何保留/释放时,乐器会显示执行此操作的代码行。
总是需要我使用汇编语言编写一些代码。
[
我不知道如何追踪我的错误......
根据Elike的回答更新。
当我更新按钮的标题时,确实发生了错误。我使用计时器每秒更新按钮标题。您可以点击按钮开始/停止它。并且我使用dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(_auto_duration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{});
自动运行该方法300次(该错误在300次内随机发生)。
我像这样调用Timer
_startcounttimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(StartCountTimerMethod) userInfo:nil repeats:YES];
- (void)StartCountTimerMethod
{
_startcountbtnsec++;
NSString *secstring = [NSString stringWithFormat:@"%d", _startcountbtnsec];
[_startbtn setTitle:secstring forState:UIControlStateNormal];
}
然后点击按钮将调用此方法:
- (void)StartBtnClick:(UIButton *)btn
{
switch (btn.tag) {
case 0:
btn.tag = 1;
[_startbtn setTitle:@"0" forState:UIControlStateNormal];
_startcountbtnsec = 0;
[self StartCountTimerStart];
NSLog(@"Start!");
break;
case 1:
btn.tag = 0;
[_startbtn setTitle:@"Start" forState:UIControlStateNormal];
[self StartCountTimerStop];
NSLog(@"Stop!");
break;
default:
break;
}
}
我无法看到更新按钮文字的任何问题......僵尸对象是" NSThread"。这个bug是否有可能与按钮和线程有关?
答案 0 :(得分:1)
我发现在方案的诊断中启用僵尸有时会更容易:Break on EXC_BAD_ACCESS in XCode?
看看你的第一个截图僵尸是非常明显的,但我同意实际的输出过于通用。 我不知道你的应用程序是什么,但我会寻找你更新按钮文本的东西(根据通知?)。