当我尝试在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;
}
答案 0 :(得分:4)
setValue:forKey:
是NSKeyValueCoding
协议的一部分,除其他外,它允许您从Interface Builder等访问对象属性。 setValue:forKey:
在NSDictionary以外的类中实现。
setObject:forKey:
是NSMutableDictionary
存在的理由。它的签名恰好与setValue:forKey:
非常相似,但更通用(例如任何密钥类型)。
因此,在您的情况下,只需将所有setValue:forKey
替换为setObject:forKey
,将valueForKey:
替换为objectForKey:
-
答案 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就会注意到并打印有用的消息。