试图在这里找到答案并最终在另一个网站上找到了线索。如果有人在这里搜索并且遇到同样的问题,请在此处发布。
NSDictionary *d = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"foo", YES, 42, nil]
forKeys:[NSArray arrayWithObjects:@"bar", @"baz", @"count", nil]];
这会产生:
Program received signal: "EXC_BAD_ACCESS"
这是什么原因?
答案 0 :(得分:4)
YES
和42
不是对象指针。您正在尝试创建一个NSArray,它只能包含对象,并且您传入的值不是指向对象的指针。你会因为
[YES description];
将崩溃 - YES
不是有效的对象指针。
答案 1 :(得分:1)
首先,在你的数组中,YES和42不是对象。尝试在那里使用[NSNumber numberWithInt:42]。你应该在那里有一个编译器警告。
答案 2 :(得分:0)
int或BOOL是对象,因此不能成为NSDictionary的一部分。而不是使用int和bools使用他们的对象相当于NSNumber。您可以使用以下方法轻松存储int:
[NSNumber numberWithInt:(int)]
您可以使用以下内容存储BOOL:
[NSNumber numberWithBool:(BOOL)]