В следующем фрагменте кода (из книги) data - это NSDictionary * data; , определенный в заголовке (без свойства).
В viewDidLoad контроллера происходит следующее:
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *keys = [NSArray arrayWithObjects:@"home", @"work", nil];
NSArray *homeDVDs = [NSArray arrayWithObjects:@"Thomas the Builder", nil];
NSArray *workDVDs = [NSArray arrayWithObjects:@"Intro to Blender", nil];
NSArray *values = [NSArray arrayWithObjects:homeDVDs, workDVDs, nil];
data = [[NSDictionary alloc] initWithObjects:values forKeys:keys];
}
Поскольку я действительно новичок в объективе-c, может кто-нибудь объяснить мне, почему мне не нужно сохранять переменные ключи, homeDVD, workDVD и значения до выхода из функции?Я ожидал бы до выделения данных что-то вроде:
[keys retain];
[homeDVDs retain];
[workDVDs retain];
[values retain];
или нет? InitWithObjects копирует (рекурсивно) все объекты в новую таблицу?
Предполагая, что у нас не было последней строки (распределение данных), если мы выпустим все NSArrays до выхода из функции (или мы могли бы смело предполагать, что все NSArrays будут автоматически освобождены, поскольку alloc * 1022 отсутствует* за каждого?)
Спасибо !!!!