结果是4 2 3,但是此NSDictionary的初始化过程中发生了什么? 这是因为它的分配只是在第一次执行,而忽略了其余分配给相同键的分配?还是因为它的分配以反向顺序执行?
NSDictionary *dic = @{
@"a":@"4",
@"b":@"2",
@"c":@"3",
@"a":@"1",
@"b":@"5",
@"c":@"6",
};
NSLog(@"luozhiyong,%@",dic[@"a"]);
NSLog(@"luozhiyong,%@",dic[@"b"]);
NSLog(@"luozhiyong,%@",dic[@"c"]);
答案 0 :(得分:0)
摘自NSDictionary的文档:
NSDictionary 。与唯一键关联的对象的静态集合。
除了提供的初始化程序(如initWithObjects:forKeys :)之外,您还可以使用字典文字创建NSDictionary对象。
NSDictionary *dictionary = @{
@"anObject" : someObject,
@"helloString" : @"Hello, World!",
@"magicNumber" : @42,
@"aValue" : someValue
};
在Objective-C中,编译器生成的代码对底层的DictionaryWithObjects:forKeys:count:方法进行调用。
摘自dictionaryWithObjects:forKeys:count的文档:
此方法逐步遍历对象和键数组,并在新字典中创建条目。
结果
NSDictionary *dic = @{
@"a":@"4",
@"b":@"2",
@"c":@"3",
@"a":@"1",
@"b":@"5",
@"c":@"6",
};
是不可预测的,在Foundation的其他版本中可能有所不同。在macOS 10.13.6上,重复的密钥将被忽略。