gpt4 book ai didi

ios - Objective-C 消息被发送到地址为 : 的已释放 'NSThread' 对象(僵尸)

转载 作者:行者123 更新时间:2023-11-29 00:29:59 27 4
gpt4 key购买 nike

我关注 this answer跟踪我的应用的 EXC_BAD_ACCESS。是的,我有一个僵尸物体。当我试图找出哪一行代码是错误的时,我发现所有负责任的图书馆都是基金会的。

Like this

当我尝试这样做时:

When you double click on any retain/release, instruments will show you line of code where this was performed.

它总是带我使用汇编语言编写一些代码。

[ assembly language (maybe?)[3]

我不知道如何像这样追踪我的错误...

根据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”。该错误是否有可能与按钮和线程有关?

最佳答案

我发现有时在方案的诊断中启用僵尸会更容易:Break on EXC_BAD_ACCESS in XCode?

从您的第一个屏幕截图来看,僵尸非常明显,但我同意实际输出过于笼统。我不知道你的应用程序是关于什么的,但我会寻找你更新按钮文本的东西(基于通知?)。

关于ios - Objective-C 消息被发送到地址为 : 的已释放 'NSThread' 对象(僵尸),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42151233/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com