![](/img/trans.png)
[英]An Objective-C message was sent to a deallocated object (zombie) at address
[英]An Objective-C message was sent to a deallocated 'NSThread' object (zombie) at address:
我遵循此答案来跟踪我的应用程序EXC_BAD_ACCESS 。 是的,我有一个僵尸物体。 当我试图找出我的代码哪一行错误时,我发现所有负责任的图书馆都是基金会。
当我尝试执行此操作时:
当您双击任何保留/释放时,仪器将向您显示执行此操作的代码行。
它总是带我一些汇编语言代码。
[
我不知道该如何追踪我的错误...
根据Elike的答案进行更新。
当我更新按钮标题时,确实发生了该错误。 我使用计时器每秒更新一次按钮标题。 您可以点击按钮以启动/停止它。 然后我使用dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(_auto_duration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{});
自动运行该方法300次(该错误在300次中随机发生)。
我这样称呼计时器_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”。该错误是否有可能与按钮和线程有关?
我发现有时仅在方案的诊断中启用僵尸有时会更容易: 在XCode上打破EXC_BAD_ACCESS?
看您的第一个屏幕截图,僵尸很明显,但是我同意实际输出过于通用。 我不知道您的应用程序是关于什么的,但我会在您更新按钮文字(基于通知?)的地方寻找。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.