【发布时间】:2009-02-23 14:04:14
【问题描述】:
在 NSDictionary 中包含 NSMutableArray 是否可以接受?或者 NSDictionary 也必须是可变的?
NSMutableArray 将在运行时添加值,NSDictionary 将始终具有相同的 2 个 NSMutableArrays。
谢谢,
丹
【问题讨论】:
标签: iphone objective-c cocoa-touch
在 NSDictionary 中包含 NSMutableArray 是否可以接受?或者 NSDictionary 也必须是可变的?
NSMutableArray 将在运行时添加值,NSDictionary 将始终具有相同的 2 个 NSMutableArrays。
谢谢,
丹
【问题讨论】:
标签: iphone objective-c cocoa-touch
是的,这是完全可以接受的。请记住,数组的内容是指向您的 NSMutableArrays 的 指针——这些是不可变字典结构中无法更改的内容。指针指向的内容可以改变你想要的一切。也就是说:
NSMutableArray *arr = [[NSMutableArray alloc] init];
NSDictionary *dict = [NSDictionary dictionaryWithObject:arr forKey:@"test"];
[arr addObject:@"Hello"];
NSString *str = [[dict objectForKey:@"test"] objectAtIndex:0];
NSLog("%@", str);
【讨论】:
这是完全可以接受的。 但是,正是这种设置表明您应该认真考虑将字典替换为具有两个属性以访问数组的 NSObject 子类。
【讨论】: