未初始化对象的NSDictionary?

时间:2013-01-12 11:40:51

标签: objective-c nsdictionary nsobject alloc

如何在NSDictionary中存储未初始化的对象?

我想我会这样做,但我不确定这是一个好方法:

 NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:
                     [MyObject1 alloc], @"myObject1",
                     [MyObject2 alloc], @"myObject2"
                     , nil];

MyObject1 *object = [dict objectForKey:@"myObject1"];

[object init];

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

您需要将可变对象存储在字典中。这样做,您将能够在插入后修改它们,因为不可变字典不允许插入新对象。

如果对于“未初始化”,则表示该对象仅使用alloc创建,而不使用init,这是不可弃的,因为 init可能会返回与使用alloc返回的对象不同的对象。所以只需像你一样存储它们,当你需要修改它们时,请调用访问器:

NSDictionary *dict = @{ @"myObject1" : [MyObject1 new] , @"myObject2" : [MyObject2 new] };
dict[@"myObject1"].someProperty= someValue;

如果您的MyObject1类是不可变的,那么您必须使用可变字典。