【发布时间】:2017-06-28 07:41:36
【问题描述】:
我关注 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次期间随机发生)。
我这样调用定时器
_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”。这个错误有没有可能是关于按钮和线程的?
【问题讨论】:
-
这很难。请记住,崩溃本身是诊断性的;实际的错误发生在很久以前。所以,是的,当消息被发送给僵尸时,它不是你的代码。但是您的代码更早地设置了这种情况。您需要尝试向后工作。
-
嗯,我也遇到过类似的情况,我可以肯定地说,基础库没有问题。尝试运行静态分析器developer.apple.com/library/content/documentation/…(这不会解决问题,只是第一步)检查潜在的内存泄漏
-
我已经运行了静态分析器,但没有潜在的内存泄漏...
标签: ios objective-c nsthread nszombie