在NSMuableDictionary中尝试setValue时应用程序崩溃

时间:2015-07-17 06:32:54

标签: ios objective-c nsmutabledictionary

当我尝试在NSMutableDictionary中设置值时,我的应用程序崩溃了。

以下是代码崩溃的代码,我无法在控制台中找到任何崩溃日志。

NSArray *b =[[a objectAtIndex:1] valueForKey:@"value"];
NSMutableDictionary *b1 =[b objectAtIndex:0];
NSString *str = self.tes;
[b1 setValue:str forKey:@"value"];

请帮我解决这个问题。

b1字典日志

{
    question = "vale";
    type = a;
}

2 个答案:

答案 0 :(得分:4)

setValue:forKey:NSKeyValueCoding协议的一部分,除其他外,它允许您从Interface Builder等访问对象属性。 setValue:forKey:在NSDictionary以外的类中实现。

setObject:forKey:NSMutableDictionary存在的理由。它的签名恰好与setValue:forKey:非常相似,但更通用(例如任何密钥类型)。

因此,在您的情况下,只需将所有setValue:forKey替换为setObject:forKey,将valueForKey:替换为objectForKey:

-

Difference between objectForKey and valueForKey?

答案 1 :(得分:0)

所以你说你EXC_BAD_ACCESS崩溃了。尝试在Xcode的Scheme编辑器中打开 Zombies 。见Enable and Debug Zombie objects in iOS using Xcode 5.1.1。这个问题解释了如何使用它,但你不需要像那里提到的那样运行仪器。

然后只需运行应用程序,Xcode就会显示EXC_BAD_ACCESS的原因。不要忘记在不需要之后将僵尸关闭

名称​​ Zombie 来自这样一个事实:在这种模式下,所有解除分配的对象都将被标记,并将作为特殊的记忆区域(不是活的,不是死的,僵尸)保存。一旦您的代码尝试使用这种解除分配的对象,Xcode就会注意到并打印有用的消息。

相关问题