【发布时间】:2016-12-01 16:54:31
【问题描述】:
尝试从NSDictionary 获取对象时,我遇到了一个相当令人费解的错误。我在拨打objectForKey 时收到EXC_BAD_ACCESS。当我查看给定的对象时,一切都很好。字典存在。它包含我正在寻找的密钥。钥匙也在那里。一切都很好。那么为什么objectForKey 在这种情况下会崩溃呢?我已经截取了代码和控制台的屏幕截图 - 您可以在打印输出中看到有问题的属性。密钥在那里,字典包含该密钥。但它好像字典不存在或什么?莫名其妙。顺便说一句,我复制了字典以试图修复崩溃,我通常不会这样做。
【问题讨论】:
-
self.downloadProgress属性是NSDictionary,好的。什么是财产所有权属性?估计不是copy吧? -
仔细查看日志 - 你有一个
__NSDictionaryM- 这是mutable实例。很意外吧?所以检查它在哪里变得可变并修复它。 -
要修复它,只需添加
copy属性,如下所示:@property (nonatomic, copy) NSDictionary *downloadProgress;希望它会有所帮助。 -
可能值得找出导致段错误的确切原因。尝试在某些东西上使用
p命令(而不是po)并找出哪个东西打印出与错误消息中显示的相同的地址。 -
另外,您是否使用自动引用计数?如果不是,您应该这样做。
标签: objective-c xcode cocoa nsdictionary lldb