У меня есть большой NSDictionary с меньшим NSDictionary внутри.Я хочу автоматически выпустить более крупный и сохранить второй.У меня есть этот код в моем методе init:
// Autoreleased stage dictionary
NSString *plistPath = [[NSBundle mainBundle] pathForResource:map ofType:@"plist"];
NSDictionary *mapDict = [NSDictionary dictionaryWithContentsOfFile:plistPath];
// Owned items
citiesDictionary = [[mapDict objectForKey:@"Cities"] retain];
townsDictionary объявлен в интерфейсе класса как:
NSDictionary *citiesDictionary;
ЕслиЯ пытаюсь освободить townsDictionary в dealloc, используя следующую строку:класс, содержащий townsDictionary.Я признаю, что mapDict освобождается в конце init.Влияет ли это освобождение на cityDictionary, хотя я и назвал для него retain?
Если так, как я могу сохранить меньший словарь при освобождении большего, содержащего словарь?Я пробовал разные вещи при назначении townsDictionary, но, похоже, ничего не работает правильно.Некоторые из подходов, которые я пробовал:
citiesDictionary = [[mapDict objectForKey:@"Cities"] copy];
и
citiesDictionary = [NSDictionary initWithDictionary:[mapDict objectForKey:@"Cities"]];
и даже
citiesDictionary = [NSDictionary initWithDictionary:[[mapDict objectForKey:@"Cities"] copy]];
Любая помощь приветствуется.Спасибо.