Я немного смущен при использовании NSDictionary. У меня есть массив (nameArray), я добавляю этот массив в словарь (nameDict), и, наконец, я добавляю этот словарь в другой словарь (requestDict).Управление памятью в NSMutableArray
NSMutableArray *nameArray = [[NSMutableArray alloc] initWithObjects:@"abcd",@"lmnop",@"xyz",@"pqr", nil];
NSMutableDictionary *nameDict = [NSMutableDictionary alloc] initWithObjectsAndKeys:nameArray,@"name", nil];
NSDictionary *requestDict = [NSDictionary dictionaryWithDictionary:nameDict];
Когда я удаляю объекты из имениDict, requestDict не влияет.
[nameDict removeAllObjects]
Пока все хорошо. Но мой запрос заключается в том, что я удаляю объекты из nameArray, почему влияет responseDict.
[nameArray removeAllObjects];
Почему NameArray до сих пор объекты. Если он не был удален, как только я удалю объекты из имениDict. Пожалуйста, помогите мне понять, если я что-то упустил.
Что произойдет, если я установил nameArray на nil в этом случае?
Но я никогда не делал ссылку между nameArray на requestDict. Вместо этого я добавил nameArray в nameDict. Должна ли requestDict не ссылаться на nameDict, а nameDict имеет ссылку на nameArray? – angraonhunt
Уверен, что да. 'nameDict' содержит' nameArray'. Затем вы создаете копию 'nameDict' как' requestDict'. Это означает, что 'requestDict' имеет ссылку на те же объекты (мелкой копии) как' nameDict'. – rmaddy
Теперь я вижу, что происходит ... Спасибо ... :) – angraonhunt