gpt4 book ai didi

objective-c - EXC_BAD_ACCESS 在执行 NSDictionary objectForKey 时 - 但对象在那里

转载 作者:行者123 更新时间:2023-12-03 17:01:43 27 4
gpt4 key购买 nike

当尝试从 NSDictionary 获取对象时,我遇到了一个相当令人困惑的错误。调用 objectForKey 时,我收到 EXC_BAD_ACCESS。当我查看给定的对象时,一切都很好。字典是存在的。它包含我正在寻找的 key 。 key 也在那里。一切都很好。那么为什么 objectForKey 这次会崩溃呢?我已经截取了代码和控制台的屏幕截图 - 您可以在打印输出中看到有问题的属性。 key 就在那里,并且字典包含该 key 。但好像字典不存在什么的?困惑了。顺便说一句,我“复制了字典以尝试修复崩溃”,但我通常不会这样做。

Screenshot of Xcode with crash

最佳答案

这里的问题是线程处理。正如我在评论中正确提醒的那样, NSMutableDictionary 不是线程安全的。它是在后台线程上更新的,上面的代码是在主线程上调用的。最简单的解决方案是将这些调用包装在 @synchronized 中。感谢所有提供帮助的人。

if ([update uniqueId]) {
@synchronized (self.downloadProgress) {
if ([self.downloadProgress objectForKey:[update uniqueId]]) {
NSDictionary *progressInfo = [[self.downloadProgress objectForKey:[update uniqueId]] copy];
if ([progressInfo objectForKey:@"progressString"]) {
return [progressInfo objectForKey:@"progressString"];
}
}
}
} (

关于objective-c - EXC_BAD_ACCESS 在执行 NSDictionary objectForKey 时 - 但对象在那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38617032/

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