Я опытный программист C / C ++, начинающий изучать разработку Objective-C.В настоящее время я просматриваю образец UICatalog и натолкнулся на еще один пример идиомы, которую я видел в нескольких местах и никогда не понимал.
Код:
ButtonsViewController *buttonsViewController = [[ButtonsViewController alloc] initWithNibName:@"ButtonsViewController" bundle:nil];
[self.menuList addObject:[NSDictionary dictionaryWithObjectsAndKeys:
NSLocalizedString(@"ButtonsTitle", @""), kTitleKey,
NSLocalizedString(@"ButtonsExplain", @""), kExplainKey,
buttonsViewController, kViewControllerKey, nil]];
[buttonsViewController release];
AFAIK, он выделяет и инициализирует ButtonsViewController, создает NSDictionary для ButtonsViewController и добавляет словарь в NSMutableArray с именем menuList (который является переменной-членом MainViewControllerгде живет приведенный выше код), а затем выпускает только что созданный buttonViewController.Позже, MainViewController использует словарную запись для переключения представлений на buttonViewController, когда это необходимо.
Мой вопрос: почему buttonViewController остается действительным после этого кода?Он был распределен и выпущен без «удержаний» между ними.Имеет ли добавление чего-либо к NSDictionary или NSMutableArray неявное «сохранение»?Если да, то должен ли я как-то это выяснить, или это одна из тех вещей, которую вы должны прочитать и запомнить?