【发布时间】:2014-07-31 17:24:39
【问题描述】:
我正在尝试处理和更改 NSDictionary 的键,同时保留相同的对象。最好的方法似乎是使用-getObjects:andKeys:s,修改键数组,然后使用+dictionaryWithObjects:forKeys:count: 创建一个新字典来重建字典。但是,对象和键的数组是id __unsafe_unretained []。有没有办法让我安全地将新的键对象分配到该数组中,还是我必须创建另一个数组 id __strong []?
以下示例在最后一行出现 EXC_BAD_ACCESS 崩溃:
NSDictionary *old = @{@"key1": @"foo", @"key2": @"bar"};
id __unsafe_unretained keys[2];
id __unsafe_unretained vals[2];
[old getObjects:vals andKeys:keys];
for (NSUInteger i = 0; i < 2; i++) {
keys[i] = [keys[i] uppercaseString];
}
NSDictionary *new = [NSDictionary dictionaryWithObjects:vals forKeys:keys count:2];
NSLog(@"New dict: %@", new);
【问题讨论】:
标签: objective-c memory-management automatic-ref-counting nsdictionary